You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@omid.apache.org by oh...@apache.org on 2018/09/20 07:47:46 UTC

[01/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Repository: incubator-omid-site
Updated Branches:
  refs/heads/asf-site 167e8b704 -> 6826ad03b


http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/RequestProcessorImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/RequestProcessorImpl.html b/xref/org/apache/omid/tso/RequestProcessorImpl.html
index 400c699..927e134 100644
--- a/xref/org/apache/omid/tso/RequestProcessorImpl.html
+++ b/xref/org/apache/omid/tso/RequestProcessorImpl.html
@@ -34,345 +34,416 @@
 <a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.lmax.disruptor.TimeoutBlockingWaitStrategy;
 <a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.lmax.disruptor.TimeoutHandler;
 <a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> com.lmax.disruptor.dsl.Disruptor;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOStateManager.TSOState;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.jboss.netty.channel.Channel;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> javax.inject.Inject;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.util.NoSuchElementException;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutorService;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ThreadFactory;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> com.lmax.disruptor.dsl.ProducerType.MULTI;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> java.util.concurrent.TimeUnit.MILLISECONDS;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> java.util.concurrent.TimeUnit.SECONDS;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.RequestProcessorImpl.RequestEvent.EVENT_FACTORY;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOStateManager.TSOState;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.jboss.netty.channel.Channel;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> javax.inject.Inject;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.NoSuchElementException;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutorService;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ThreadFactory;
 <a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestProcessorImpl</a> <strong class="jxr_keyword">implements</strong> EventHandler&lt;RequestProcessorImpl.RequestEvent&gt;, RequestProcessor, TimeoutHandler {
-<a class="jxr_linenumber" name="48" href="#48">48</a>  
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(RequestProcessorImpl.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <em class="jxr_comment">// Disruptor-related attributes</em>
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> ExecutorService disruptorExec;
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Disruptor&lt;RequestEvent&gt; disruptor;
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> RingBuffer&lt;RequestEvent&gt; requestRing;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> com.lmax.disruptor.dsl.ProducerType.MULTI;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> java.util.concurrent.TimeUnit.MILLISECONDS;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> java.util.concurrent.TimeUnit.SECONDS;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.RequestProcessorImpl.RequestEvent.EVENT_FACTORY;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestProcessorImpl</a> <strong class="jxr_keyword">implements</strong> EventHandler&lt;RequestProcessorImpl.RequestEvent&gt;, RequestProcessor, TimeoutHandler {
+<a class="jxr_linenumber" name="53" href="#53">53</a>  
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(RequestProcessorImpl.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/TimestampOracle.html">TimestampOracle</a> timestampOracle;
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/CommitHashMap.html">CommitHashMap</a> hashmap;
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics;
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessor.html">PersistenceProcessor</a> persistProc;
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <em class="jxr_comment">// Disruptor-related attributes</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> ExecutorService disruptorExec;
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Disruptor&lt;RequestEvent&gt; disruptor;
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> RingBuffer&lt;RequestEvent&gt; requestRing;
 <a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> lowWatermark = -1L;
-<a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>      @Inject
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestProcessorImpl</a>(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics,
-<a class="jxr_linenumber" name="65" href="#65">65</a>                           <a href="../../../../org/apache/omid/tso/TimestampOracle.html">TimestampOracle</a> timestampOracle,
-<a class="jxr_linenumber" name="66" href="#66">66</a>                           <a href="../../../../org/apache/omid/tso/PersistenceProcessor.html">PersistenceProcessor</a> persistProc,
-<a class="jxr_linenumber" name="67" href="#67">67</a>                           <a href="../../../../org/apache/omid/tso/Panicker.html">Panicker</a> panicker,
-<a class="jxr_linenumber" name="68" href="#68">68</a>                           <a href="../../../../org/apache/omid/tso/TSOServerConfig.html">TSOServerConfig</a> config)
-<a class="jxr_linenumber" name="69" href="#69">69</a>              <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="70" href="#70">70</a>  
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <em class="jxr_comment">// Disruptor initialization</em>
-<a class="jxr_linenumber" name="73" href="#73">73</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>          TimeoutBlockingWaitStrategy timeoutStrategy = <strong class="jxr_keyword">new</strong> TimeoutBlockingWaitStrategy(config.getBatchPersistTimeoutInMs(), MILLISECONDS);
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/TimestampOracle.html">TimestampOracle</a> timestampOracle;
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/CommitHashMap.html">CommitHashMap</a> hashmap;
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;Long, Long&gt; tableFences;
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics;
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessor.html">PersistenceProcessor</a> persistProc;
+<a class="jxr_linenumber" name="66" href="#66">66</a>  
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> lowWatermark = -1L;
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>      @Inject
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestProcessorImpl</a>(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics,
+<a class="jxr_linenumber" name="71" href="#71">71</a>                           <a href="../../../../org/apache/omid/tso/TimestampOracle.html">TimestampOracle</a> timestampOracle,
+<a class="jxr_linenumber" name="72" href="#72">72</a>                           <a href="../../../../org/apache/omid/tso/PersistenceProcessor.html">PersistenceProcessor</a> persistProc,
+<a class="jxr_linenumber" name="73" href="#73">73</a>                           <a href="../../../../org/apache/omid/tso/Panicker.html">Panicker</a> panicker,
+<a class="jxr_linenumber" name="74" href="#74">74</a>                           <a href="../../../../org/apache/omid/tso/TSOServerConfig.html">TSOServerConfig</a> config)
+<a class="jxr_linenumber" name="75" href="#75">75</a>              <strong class="jxr_keyword">throws</strong> IOException {
 <a class="jxr_linenumber" name="76" href="#76">76</a>  
-<a class="jxr_linenumber" name="77" href="#77">77</a>          ThreadFactory threadFactory = <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"request-%d"</span>).build();
-<a class="jxr_linenumber" name="78" href="#78">78</a>          <strong class="jxr_keyword">this</strong>.disruptorExec = Executors.newSingleThreadExecutor(threadFactory);
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">this</strong>.disruptor = <strong class="jxr_keyword">new</strong> Disruptor&lt;&gt;(EVENT_FACTORY, 1 &lt;&lt; 12, disruptorExec, MULTI, timeoutStrategy);
-<a class="jxr_linenumber" name="81" href="#81">81</a>          disruptor.handleExceptionsWith(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/FatalExceptionHandler.html">FatalExceptionHandler</a>(panicker)); <em class="jxr_comment">// This must be before handleEventsWith()</em>
-<a class="jxr_linenumber" name="82" href="#82">82</a>          disruptor.handleEventsWith(<strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">this</strong>.requestRing = disruptor.start();
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>          <em class="jxr_comment">// Attribute initialization</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>          <strong class="jxr_keyword">this</strong>.metrics = metrics;
-<a class="jxr_linenumber" name="90" href="#90">90</a>          <strong class="jxr_keyword">this</strong>.persistProc = persistProc;
-<a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">this</strong>.timestampOracle = timestampOracle;
-<a class="jxr_linenumber" name="92" href="#92">92</a>          <strong class="jxr_keyword">this</strong>.hashmap = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/CommitHashMap.html">CommitHashMap</a>(config.getConflictMapSize());
-<a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>          LOG.info(<span class="jxr_string">"RequestProcessor initialized"</span>);
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>      }
-<a class="jxr_linenumber" name="97" href="#97">97</a>  
-<a class="jxr_linenumber" name="98" href="#98">98</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="99" href="#99">99</a>  <em class="jxr_javadoccomment">     * This should be called when the TSO gets leadership</em>
-<a class="jxr_linenumber" name="100" href="#100">100</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="101" href="#101">101</a>     @Override
-<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> update(<a href="../../../../org/apache/omid/tso/TSOStateManager.html">TSOState</a> state) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="103" href="#103">103</a>         LOG.info(<span class="jxr_string">"Initializing RequestProcessor state..."</span>);
-<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">this</strong>.lowWatermark = state.getLowWatermark();
-<a class="jxr_linenumber" name="105" href="#105">105</a>         persistProc.persistLowWatermark(lowWatermark).get(); <em class="jxr_comment">// Sync persist</em>
-<a class="jxr_linenumber" name="106" href="#106">106</a>         LOG.info(<span class="jxr_string">"RequestProcessor state initialized with LWMs {} and Epoch {}"</span>, lowWatermark, state.getEpoch());
-<a class="jxr_linenumber" name="107" href="#107">107</a>     }
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>     @Override
-<a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onEvent(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> event, <strong class="jxr_keyword">long</strong> sequence, <strong class="jxr_keyword">boolean</strong> endOfBatch) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>         <strong class="jxr_keyword">switch</strong> (event.getType()) {
-<a class="jxr_linenumber" name="113" href="#113">113</a>             <strong class="jxr_keyword">case</strong> TIMESTAMP:
-<a class="jxr_linenumber" name="114" href="#114">114</a>                 handleTimestamp(event);
-<a class="jxr_linenumber" name="115" href="#115">115</a>                 <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="116" href="#116">116</a>             <strong class="jxr_keyword">case</strong> COMMIT:
-<a class="jxr_linenumber" name="117" href="#117">117</a>                 handleCommit(event);
-<a class="jxr_linenumber" name="118" href="#118">118</a>                 <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="119" href="#119">119</a>             <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="120" href="#120">120</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Event not allowed in Request Processor: "</span> + event);
-<a class="jxr_linenumber" name="121" href="#121">121</a>         }
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a>     }
-<a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a>     @Override
-<a class="jxr_linenumber" name="126" href="#126">126</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onTimeout(<strong class="jxr_keyword">long</strong> sequence) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="127" href="#127">127</a> 
-<a class="jxr_linenumber" name="128" href="#128">128</a>         <em class="jxr_comment">// TODO We can not use this as a timeout trigger for flushing. This timeout is related to the time between</em>
-<a class="jxr_linenumber" name="129" href="#129">129</a>         <em class="jxr_comment">// TODO (cont) arrivals of requests to the disruptor. We need another mechanism to trigger timeouts</em>
-<a class="jxr_linenumber" name="130" href="#130">130</a>         <em class="jxr_comment">// TODO (cont) WARNING!!! Take care with the implementation because if there's other thread than request-0</em>
-<a class="jxr_linenumber" name="131" href="#131">131</a>         <em class="jxr_comment">// TODO (cont) thread the one that calls persistProc.triggerCurrentBatchFlush(); we'll incur in concurrency issues</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a>         <em class="jxr_comment">// TODO (cont) This is because, in the current implementation, only the request-0 thread calls the public methods</em>
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <em class="jxr_comment">// TODO (cont) in persistProc and it is guaranteed that access them serially.</em>
-<a class="jxr_linenumber" name="134" href="#134">134</a>         persistProc.triggerCurrentBatchFlush();
-<a class="jxr_linenumber" name="135" href="#135">135</a> 
-<a class="jxr_linenumber" name="136" href="#136">136</a>     }
+<a class="jxr_linenumber" name="77" href="#77">77</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>          <em class="jxr_comment">// Disruptor initialization</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>          TimeoutBlockingWaitStrategy timeoutStrategy = <strong class="jxr_keyword">new</strong> TimeoutBlockingWaitStrategy(config.getBatchPersistTimeoutInMs(), MILLISECONDS);
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>          ThreadFactory threadFactory = <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"request-%d"</span>).build();
+<a class="jxr_linenumber" name="84" href="#84">84</a>          <strong class="jxr_keyword">this</strong>.disruptorExec = Executors.newSingleThreadExecutor(threadFactory);
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">this</strong>.disruptor = <strong class="jxr_keyword">new</strong> Disruptor&lt;&gt;(EVENT_FACTORY, 1 &lt;&lt; 12, disruptorExec, MULTI, timeoutStrategy);
+<a class="jxr_linenumber" name="87" href="#87">87</a>          disruptor.handleExceptionsWith(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/FatalExceptionHandler.html">FatalExceptionHandler</a>(panicker)); <em class="jxr_comment">// This must be before handleEventsWith()</em>
+<a class="jxr_linenumber" name="88" href="#88">88</a>          disruptor.handleEventsWith(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="89" href="#89">89</a>          <strong class="jxr_keyword">this</strong>.requestRing = disruptor.start();
+<a class="jxr_linenumber" name="90" href="#90">90</a>  
+<a class="jxr_linenumber" name="91" href="#91">91</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="92" href="#92">92</a>          <em class="jxr_comment">// Attribute initialization</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>  
+<a class="jxr_linenumber" name="95" href="#95">95</a>          <strong class="jxr_keyword">this</strong>.metrics = metrics;
+<a class="jxr_linenumber" name="96" href="#96">96</a>          <strong class="jxr_keyword">this</strong>.persistProc = persistProc;
+<a class="jxr_linenumber" name="97" href="#97">97</a>          <strong class="jxr_keyword">this</strong>.timestampOracle = timestampOracle;
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <strong class="jxr_keyword">this</strong>.hashmap = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/CommitHashMap.html">CommitHashMap</a>(config.getConflictMapSize());
+<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">this</strong>.tableFences = <strong class="jxr_keyword">new</strong> HashMap&lt;Long, Long&gt;();
+<a class="jxr_linenumber" name="100" href="#100">100</a> 
+<a class="jxr_linenumber" name="101" href="#101">101</a>         LOG.info(<span class="jxr_string">"RequestProcessor initialized"</span>);
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>     }
+<a class="jxr_linenumber" name="104" href="#104">104</a> 
+<a class="jxr_linenumber" name="105" href="#105">105</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="106" href="#106">106</a> <em class="jxr_javadoccomment">     * This should be called when the TSO gets leadership</em>
+<a class="jxr_linenumber" name="107" href="#107">107</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="108" href="#108">108</a>     @Override
+<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> update(<a href="../../../../org/apache/omid/tso/TSOStateManager.html">TSOState</a> state) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="110" href="#110">110</a>         LOG.info(<span class="jxr_string">"Initializing RequestProcessor state..."</span>);
+<a class="jxr_linenumber" name="111" href="#111">111</a>         <strong class="jxr_keyword">this</strong>.lowWatermark = state.getLowWatermark();
+<a class="jxr_linenumber" name="112" href="#112">112</a>         persistProc.persistLowWatermark(lowWatermark).get(); <em class="jxr_comment">// Sync persist</em>
+<a class="jxr_linenumber" name="113" href="#113">113</a>         LOG.info(<span class="jxr_string">"RequestProcessor state initialized with LWMs {} and Epoch {}"</span>, lowWatermark, state.getEpoch());
+<a class="jxr_linenumber" name="114" href="#114">114</a>     }
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a>     @Override
+<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onEvent(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> event, <strong class="jxr_keyword">long</strong> sequence, <strong class="jxr_keyword">boolean</strong> endOfBatch) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>         <strong class="jxr_keyword">switch</strong> (event.getType()) {
+<a class="jxr_linenumber" name="120" href="#120">120</a>             <strong class="jxr_keyword">case</strong> TIMESTAMP:
+<a class="jxr_linenumber" name="121" href="#121">121</a>                 handleTimestamp(event);
+<a class="jxr_linenumber" name="122" href="#122">122</a>                 <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="123" href="#123">123</a>             <strong class="jxr_keyword">case</strong> COMMIT:
+<a class="jxr_linenumber" name="124" href="#124">124</a>                 handleCommit(event);
+<a class="jxr_linenumber" name="125" href="#125">125</a>                 <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="126" href="#126">126</a>             <strong class="jxr_keyword">case</strong> FENCE:
+<a class="jxr_linenumber" name="127" href="#127">127</a>                 handleFence(event);
+<a class="jxr_linenumber" name="128" href="#128">128</a>                 <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="129" href="#129">129</a>             <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="130" href="#130">130</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Event not allowed in Request Processor: "</span> + event);
+<a class="jxr_linenumber" name="131" href="#131">131</a>         }
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>     }
+<a class="jxr_linenumber" name="134" href="#134">134</a> 
+<a class="jxr_linenumber" name="135" href="#135">135</a>     @Override
+<a class="jxr_linenumber" name="136" href="#136">136</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onTimeout(<strong class="jxr_keyword">long</strong> sequence) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="137" href="#137">137</a> 
-<a class="jxr_linenumber" name="138" href="#138">138</a>     @Override
-<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> timestampRequest(Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
-<a class="jxr_linenumber" name="140" href="#140">140</a> 
-<a class="jxr_linenumber" name="141" href="#141">141</a>         monCtx.timerStart(<span class="jxr_string">"request.processor.timestamp.latency"</span>);
-<a class="jxr_linenumber" name="142" href="#142">142</a>         <strong class="jxr_keyword">long</strong> seq = requestRing.next();
-<a class="jxr_linenumber" name="143" href="#143">143</a>         <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e = requestRing.get(seq);
-<a class="jxr_linenumber" name="144" href="#144">144</a>         RequestEvent.makeTimestampRequest(e, c, monCtx);
-<a class="jxr_linenumber" name="145" href="#145">145</a>         requestRing.publish(seq);
-<a class="jxr_linenumber" name="146" href="#146">146</a> 
-<a class="jxr_linenumber" name="147" href="#147">147</a>     }
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>     @Override
-<a class="jxr_linenumber" name="150" href="#150">150</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> commitRequest(<strong class="jxr_keyword">long</strong> startTimestamp, Collection&lt;Long&gt; writeSet, <strong class="jxr_keyword">boolean</strong> isRetry, Channel c,
-<a class="jxr_linenumber" name="151" href="#151">151</a>                               <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
-<a class="jxr_linenumber" name="152" href="#152">152</a> 
-<a class="jxr_linenumber" name="153" href="#153">153</a>         monCtx.timerStart(<span class="jxr_string">"request.processor.commit.latency"</span>);
-<a class="jxr_linenumber" name="154" href="#154">154</a>         <strong class="jxr_keyword">long</strong> seq = requestRing.next();
-<a class="jxr_linenumber" name="155" href="#155">155</a>         <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e = requestRing.get(seq);
-<a class="jxr_linenumber" name="156" href="#156">156</a>         RequestEvent.makeCommitRequest(e, startTimestamp, monCtx, writeSet, isRetry, c);
-<a class="jxr_linenumber" name="157" href="#157">157</a>         requestRing.publish(seq);
+<a class="jxr_linenumber" name="138" href="#138">138</a>         <em class="jxr_comment">// TODO We can not use this as a timeout trigger for flushing. This timeout is related to the time between</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a>         <em class="jxr_comment">// TODO (cont) arrivals of requests to the disruptor. We need another mechanism to trigger timeouts</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a>         <em class="jxr_comment">// TODO (cont) WARNING!!! Take care with the implementation because if there's other thread than request-0</em>
+<a class="jxr_linenumber" name="141" href="#141">141</a>         <em class="jxr_comment">// TODO (cont) thread the one that calls persistProc.triggerCurrentBatchFlush(); we'll incur in concurrency issues</em>
+<a class="jxr_linenumber" name="142" href="#142">142</a>         <em class="jxr_comment">// TODO (cont) This is because, in the current implementation, only the request-0 thread calls the public methods</em>
+<a class="jxr_linenumber" name="143" href="#143">143</a>         <em class="jxr_comment">// TODO (cont) in persistProc and it is guaranteed that access them serially.</em>
+<a class="jxr_linenumber" name="144" href="#144">144</a>         persistProc.triggerCurrentBatchFlush();
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>     }
+<a class="jxr_linenumber" name="147" href="#147">147</a> 
+<a class="jxr_linenumber" name="148" href="#148">148</a>     @Override
+<a class="jxr_linenumber" name="149" href="#149">149</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> timestampRequest(Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
+<a class="jxr_linenumber" name="150" href="#150">150</a> 
+<a class="jxr_linenumber" name="151" href="#151">151</a>         monCtx.timerStart(<span class="jxr_string">"request.processor.timestamp.latency"</span>);
+<a class="jxr_linenumber" name="152" href="#152">152</a>         <strong class="jxr_keyword">long</strong> seq = requestRing.next();
+<a class="jxr_linenumber" name="153" href="#153">153</a>         <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e = requestRing.get(seq);
+<a class="jxr_linenumber" name="154" href="#154">154</a>         RequestEvent.makeTimestampRequest(e, c, monCtx);
+<a class="jxr_linenumber" name="155" href="#155">155</a>         requestRing.publish(seq);
+<a class="jxr_linenumber" name="156" href="#156">156</a> 
+<a class="jxr_linenumber" name="157" href="#157">157</a>     }
 <a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>     }
-<a class="jxr_linenumber" name="160" href="#160">160</a> 
-<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> handleTimestamp(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> requestEvent) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="159" href="#159">159</a>     @Override
+<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> commitRequest(<strong class="jxr_keyword">long</strong> startTimestamp, Collection&lt;Long&gt; writeSet, Collection&lt;Long&gt; tableIdSet, <strong class="jxr_keyword">boolean</strong> isRetry, Channel c,
+<a class="jxr_linenumber" name="161" href="#161">161</a>                               <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
 <a class="jxr_linenumber" name="162" href="#162">162</a> 
-<a class="jxr_linenumber" name="163" href="#163">163</a>         <strong class="jxr_keyword">long</strong> timestamp = timestampOracle.next();
-<a class="jxr_linenumber" name="164" href="#164">164</a>         requestEvent.getMonCtx().timerStop(<span class="jxr_string">"request.processor.timestamp.latency"</span>);
-<a class="jxr_linenumber" name="165" href="#165">165</a>         persistProc.addTimestampToBatch(timestamp, requestEvent.getChannel(), requestEvent.getMonCtx());
-<a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>     }
+<a class="jxr_linenumber" name="163" href="#163">163</a>         monCtx.timerStart(<span class="jxr_string">"request.processor.commit.latency"</span>);
+<a class="jxr_linenumber" name="164" href="#164">164</a>         <strong class="jxr_keyword">long</strong> seq = requestRing.next();
+<a class="jxr_linenumber" name="165" href="#165">165</a>         <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e = requestRing.get(seq);
+<a class="jxr_linenumber" name="166" href="#166">166</a>         RequestEvent.makeCommitRequest(e, startTimestamp, monCtx, writeSet, tableIdSet, isRetry, c);
+<a class="jxr_linenumber" name="167" href="#167">167</a>         requestRing.publish(seq);
 <a class="jxr_linenumber" name="168" href="#168">168</a> 
-<a class="jxr_linenumber" name="169" href="#169">169</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> handleCommit(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> event) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="169" href="#169">169</a>     }
 <a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">long</strong> startTimestamp = event.getStartTimestamp();
-<a class="jxr_linenumber" name="172" href="#172">172</a>         Iterable&lt;Long&gt; writeSet = event.writeSet();
-<a class="jxr_linenumber" name="173" href="#173">173</a>         <strong class="jxr_keyword">boolean</strong> isCommitRetry = event.isCommitRetry();
-<a class="jxr_linenumber" name="174" href="#174">174</a>         Channel c = event.getChannel();
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>         <strong class="jxr_keyword">boolean</strong> txCanCommit;
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>         <strong class="jxr_keyword">int</strong> numCellsInWriteset = 0;
-<a class="jxr_linenumber" name="179" href="#179">179</a>         <em class="jxr_comment">// 0. check if it should abort</em>
-<a class="jxr_linenumber" name="180" href="#180">180</a>         <strong class="jxr_keyword">if</strong> (startTimestamp &lt;= lowWatermark) {
-<a class="jxr_linenumber" name="181" href="#181">181</a>             txCanCommit = false;
-<a class="jxr_linenumber" name="182" href="#182">182</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="183" href="#183">183</a>             <em class="jxr_comment">// 1. check the write-write conflicts</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a>             txCanCommit = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="185" href="#185">185</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> cellId : writeSet) {
-<a class="jxr_linenumber" name="186" href="#186">186</a>                 <strong class="jxr_keyword">long</strong> value = hashmap.getLatestWriteForCell(cellId);
-<a class="jxr_linenumber" name="187" href="#187">187</a>                 <strong class="jxr_keyword">if</strong> (value != 0 &amp;&amp; value &gt;= startTimestamp) {
-<a class="jxr_linenumber" name="188" href="#188">188</a>                     txCanCommit = false;
-<a class="jxr_linenumber" name="189" href="#189">189</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="190" href="#190">190</a>                 }
-<a class="jxr_linenumber" name="191" href="#191">191</a>                 numCellsInWriteset++;
-<a class="jxr_linenumber" name="192" href="#192">192</a>             }
-<a class="jxr_linenumber" name="193" href="#193">193</a>         }
-<a class="jxr_linenumber" name="194" href="#194">194</a> 
-<a class="jxr_linenumber" name="195" href="#195">195</a>         <strong class="jxr_keyword">if</strong> (txCanCommit) {
-<a class="jxr_linenumber" name="196" href="#196">196</a>             <em class="jxr_comment">// 2. commit</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a> 
-<a class="jxr_linenumber" name="198" href="#198">198</a>             <strong class="jxr_keyword">long</strong> commitTimestamp = timestampOracle.next();
-<a class="jxr_linenumber" name="199" href="#199">199</a> 
-<a class="jxr_linenumber" name="200" href="#200">200</a>             <strong class="jxr_keyword">if</strong> (numCellsInWriteset &gt; 0) {
-<a class="jxr_linenumber" name="201" href="#201">201</a>                 <strong class="jxr_keyword">long</strong> newLowWatermark = lowWatermark;
-<a class="jxr_linenumber" name="202" href="#202">202</a> 
-<a class="jxr_linenumber" name="203" href="#203">203</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> r : writeSet) {
-<a class="jxr_linenumber" name="204" href="#204">204</a>                     <strong class="jxr_keyword">long</strong> removed = hashmap.putLatestWriteForCell(r, commitTimestamp);
-<a class="jxr_linenumber" name="205" href="#205">205</a>                     newLowWatermark = Math.max(removed, newLowWatermark);
-<a class="jxr_linenumber" name="206" href="#206">206</a>                 }
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>                 <strong class="jxr_keyword">if</strong> (newLowWatermark != lowWatermark) {
-<a class="jxr_linenumber" name="209" href="#209">209</a>                     LOG.trace(<span class="jxr_string">"Setting new low Watermark to {}"</span>, newLowWatermark);
-<a class="jxr_linenumber" name="210" href="#210">210</a>                     lowWatermark = newLowWatermark;
-<a class="jxr_linenumber" name="211" href="#211">211</a>                     persistProc.persistLowWatermark(newLowWatermark); <em class="jxr_comment">// Async persist</em>
-<a class="jxr_linenumber" name="212" href="#212">212</a>                 }
+<a class="jxr_linenumber" name="171" href="#171">171</a>     @Override
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> fenceRequest(<strong class="jxr_keyword">long</strong> tableID, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
+<a class="jxr_linenumber" name="173" href="#173">173</a> 
+<a class="jxr_linenumber" name="174" href="#174">174</a>         monCtx.timerStart(<span class="jxr_string">"request.processor.fence.latency"</span>);
+<a class="jxr_linenumber" name="175" href="#175">175</a>         <strong class="jxr_keyword">long</strong> seq = requestRing.next();
+<a class="jxr_linenumber" name="176" href="#176">176</a>         <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e = requestRing.get(seq);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         RequestEvent.makeFenceRequest(e, tableID, c, monCtx);
+<a class="jxr_linenumber" name="178" href="#178">178</a>         requestRing.publish(seq);
+<a class="jxr_linenumber" name="179" href="#179">179</a> 
+<a class="jxr_linenumber" name="180" href="#180">180</a>     }
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> handleTimestamp(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> requestEvent) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">long</strong> timestamp = timestampOracle.next();
+<a class="jxr_linenumber" name="185" href="#185">185</a>         requestEvent.getMonCtx().timerStop(<span class="jxr_string">"request.processor.timestamp.latency"</span>);
+<a class="jxr_linenumber" name="186" href="#186">186</a>         persistProc.addTimestampToBatch(timestamp, requestEvent.getChannel(), requestEvent.getMonCtx());
+<a class="jxr_linenumber" name="187" href="#187">187</a> 
+<a class="jxr_linenumber" name="188" href="#188">188</a>     }
+<a class="jxr_linenumber" name="189" href="#189">189</a> 
+<a class="jxr_linenumber" name="190" href="#190">190</a>     <em class="jxr_comment">// Checks whether transaction transactionId started before a fence creation of a table transactionId modified.</em>
+<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> hasConflictsWithFences(<strong class="jxr_keyword">long</strong> startTimestamp, Collection&lt;Long&gt; tableIdSet) {
+<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">if</strong> (!tableFences.isEmpty()) {
+<a class="jxr_linenumber" name="193" href="#193">193</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> tableId: tableIdSet) {
+<a class="jxr_linenumber" name="194" href="#194">194</a>                 Long fence = tableFences.get(tableId);
+<a class="jxr_linenumber" name="195" href="#195">195</a>                 <strong class="jxr_keyword">if</strong> (fence != <strong class="jxr_keyword">null</strong> &amp;&amp; fence &gt; startTimestamp) {
+<a class="jxr_linenumber" name="196" href="#196">196</a>                     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="197" href="#197">197</a>                 }
+<a class="jxr_linenumber" name="198" href="#198">198</a>                 <strong class="jxr_keyword">if</strong> (fence != <strong class="jxr_keyword">null</strong> &amp;&amp; fence &lt; lowWatermark) {
+<a class="jxr_linenumber" name="199" href="#199">199</a>                     tableFences.remove(tableId); <em class="jxr_comment">// Garbage collect entries of old fences.</em>
+<a class="jxr_linenumber" name="200" href="#200">200</a>                 }
+<a class="jxr_linenumber" name="201" href="#201">201</a>             }
+<a class="jxr_linenumber" name="202" href="#202">202</a>         }
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>         <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="205" href="#205">205</a>     }
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>  <em class="jxr_comment">// Checks whether transactionId has a write-write conflict with a transaction committed after transactionId.</em>
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> hasConflictsWithCommittedTransactions(<strong class="jxr_keyword">long</strong> startTimestamp, Iterable&lt;Long&gt; writeSet) {
+<a class="jxr_linenumber" name="209" href="#209">209</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> cellId : writeSet) {
+<a class="jxr_linenumber" name="210" href="#210">210</a>             <strong class="jxr_keyword">long</strong> value = hashmap.getLatestWriteForCell(cellId);
+<a class="jxr_linenumber" name="211" href="#211">211</a>             <strong class="jxr_keyword">if</strong> (value != 0 &amp;&amp; value &gt;= startTimestamp) {
+<a class="jxr_linenumber" name="212" href="#212">212</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="213" href="#213">213</a>             }
-<a class="jxr_linenumber" name="214" href="#214">214</a>             event.getMonCtx().timerStop(<span class="jxr_string">"request.processor.commit.latency"</span>);
-<a class="jxr_linenumber" name="215" href="#215">215</a>             persistProc.addCommitToBatch(startTimestamp, commitTimestamp, c, event.getMonCtx());
-<a class="jxr_linenumber" name="216" href="#216">216</a> 
-<a class="jxr_linenumber" name="217" href="#217">217</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="214" href="#214">214</a>         }
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>         <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="217" href="#217">217</a>     }
 <a class="jxr_linenumber" name="218" href="#218">218</a> 
-<a class="jxr_linenumber" name="219" href="#219">219</a>             event.getMonCtx().timerStop(<span class="jxr_string">"request.processor.commit.latency"</span>);
-<a class="jxr_linenumber" name="220" href="#220">220</a>             <strong class="jxr_keyword">if</strong> (isCommitRetry) { <em class="jxr_comment">// Re-check if it was already committed but the client retried due to a lag replying</em>
-<a class="jxr_linenumber" name="221" href="#221">221</a>                 persistProc.addCommitRetryToBatch(startTimestamp, c, event.getMonCtx());
-<a class="jxr_linenumber" name="222" href="#222">222</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="223" href="#223">223</a>                 persistProc.addAbortToBatch(startTimestamp, c, event.getMonCtx());
-<a class="jxr_linenumber" name="224" href="#224">224</a>             }
-<a class="jxr_linenumber" name="225" href="#225">225</a> 
-<a class="jxr_linenumber" name="226" href="#226">226</a>         }
-<a class="jxr_linenumber" name="227" href="#227">227</a> 
-<a class="jxr_linenumber" name="228" href="#228">228</a>     }
-<a class="jxr_linenumber" name="229" href="#229">229</a> 
-<a class="jxr_linenumber" name="230" href="#230">230</a>     @Override
-<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="232" href="#232">232</a> 
-<a class="jxr_linenumber" name="233" href="#233">233</a>         LOG.info(<span class="jxr_string">"Terminating Request Processor..."</span>);
-<a class="jxr_linenumber" name="234" href="#234">234</a>         disruptor.halt();
-<a class="jxr_linenumber" name="235" href="#235">235</a>         disruptor.shutdown();
-<a class="jxr_linenumber" name="236" href="#236">236</a>         LOG.info(<span class="jxr_string">"\tRequest Processor Disruptor shutdown"</span>);
-<a class="jxr_linenumber" name="237" href="#237">237</a>         disruptorExec.shutdownNow();
-<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="239" href="#239">239</a>             disruptorExec.awaitTermination(3, SECONDS);
-<a class="jxr_linenumber" name="240" href="#240">240</a>             LOG.info(<span class="jxr_string">"\tRequest Processor Disruptor executor shutdown"</span>);
-<a class="jxr_linenumber" name="241" href="#241">241</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
-<a class="jxr_linenumber" name="242" href="#242">242</a>             LOG.error(<span class="jxr_string">"Interrupted whilst finishing Request Processor Disruptor executor"</span>);
-<a class="jxr_linenumber" name="243" href="#243">243</a>             Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="244" href="#244">244</a>         }
-<a class="jxr_linenumber" name="245" href="#245">245</a>         LOG.info(<span class="jxr_string">"Request Processor terminated"</span>);
+<a class="jxr_linenumber" name="219" href="#219">219</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> handleCommit(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> event) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="220" href="#220">220</a> 
+<a class="jxr_linenumber" name="221" href="#221">221</a>         <strong class="jxr_keyword">long</strong> startTimestamp = event.getStartTimestamp();
+<a class="jxr_linenumber" name="222" href="#222">222</a>         Iterable&lt;Long&gt; writeSet = event.writeSet();
+<a class="jxr_linenumber" name="223" href="#223">223</a>         Collection&lt;Long&gt; tableIdSet = event.getTableIdSet();
+<a class="jxr_linenumber" name="224" href="#224">224</a>         <strong class="jxr_keyword">boolean</strong> isCommitRetry = event.isCommitRetry();
+<a class="jxr_linenumber" name="225" href="#225">225</a>         Channel c = event.getChannel();
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>         <strong class="jxr_keyword">boolean</strong> nonEmptyWriteSet = writeSet.iterator().hasNext();
+<a class="jxr_linenumber" name="228" href="#228">228</a> 
+<a class="jxr_linenumber" name="229" href="#229">229</a>         <em class="jxr_comment">// If the transaction started before the low watermark, or</em>
+<a class="jxr_linenumber" name="230" href="#230">230</a>         <em class="jxr_comment">// it started before a fence and modified the table the fence created for, or</em>
+<a class="jxr_linenumber" name="231" href="#231">231</a>         <em class="jxr_comment">// it has a write-write conflict with a transaction committed after it started</em>
+<a class="jxr_linenumber" name="232" href="#232">232</a>         <em class="jxr_comment">// Then it should abort. Otherwise, it can commit.</em>
+<a class="jxr_linenumber" name="233" href="#233">233</a>         <strong class="jxr_keyword">if</strong> (startTimestamp &gt; lowWatermark &amp;&amp;
+<a class="jxr_linenumber" name="234" href="#234">234</a>             !hasConflictsWithFences(startTimestamp, tableIdSet) &amp;&amp;
+<a class="jxr_linenumber" name="235" href="#235">235</a>             !hasConflictsWithCommittedTransactions(startTimestamp, writeSet)) {
+<a class="jxr_linenumber" name="236" href="#236">236</a> 
+<a class="jxr_linenumber" name="237" href="#237">237</a>             <strong class="jxr_keyword">long</strong> commitTimestamp = timestampOracle.next();
+<a class="jxr_linenumber" name="238" href="#238">238</a> 
+<a class="jxr_linenumber" name="239" href="#239">239</a>             <strong class="jxr_keyword">if</strong> (nonEmptyWriteSet) {
+<a class="jxr_linenumber" name="240" href="#240">240</a>                 <strong class="jxr_keyword">long</strong> newLowWatermark = lowWatermark;
+<a class="jxr_linenumber" name="241" href="#241">241</a> 
+<a class="jxr_linenumber" name="242" href="#242">242</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> r : writeSet) {
+<a class="jxr_linenumber" name="243" href="#243">243</a>                     <strong class="jxr_keyword">long</strong> removed = hashmap.putLatestWriteForCell(r, commitTimestamp);
+<a class="jxr_linenumber" name="244" href="#244">244</a>                     newLowWatermark = Math.max(removed, newLowWatermark);
+<a class="jxr_linenumber" name="245" href="#245">245</a>                 }
 <a class="jxr_linenumber" name="246" href="#246">246</a> 
-<a class="jxr_linenumber" name="247" href="#247">247</a>     }
-<a class="jxr_linenumber" name="248" href="#248">248</a> 
-<a class="jxr_linenumber" name="249" href="#249">249</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> <strong class="jxr_keyword">implements</strong> Iterable&lt;Long&gt; {
-<a class="jxr_linenumber" name="250" href="#250">250</a> 
-<a class="jxr_linenumber" name="251" href="#251">251</a>         enum <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> {
-<a class="jxr_linenumber" name="252" href="#252">252</a>             TIMESTAMP, COMMIT
-<a class="jxr_linenumber" name="253" href="#253">253</a>         }
-<a class="jxr_linenumber" name="254" href="#254">254</a> 
-<a class="jxr_linenumber" name="255" href="#255">255</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> type = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="256" href="#256">256</a>         <strong class="jxr_keyword">private</strong> Channel channel = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="247" href="#247">247</a>                 <strong class="jxr_keyword">if</strong> (newLowWatermark != lowWatermark) {
+<a class="jxr_linenumber" name="248" href="#248">248</a>                     LOG.trace(<span class="jxr_string">"Setting new low Watermark to {}"</span>, newLowWatermark);
+<a class="jxr_linenumber" name="249" href="#249">249</a>                     lowWatermark = newLowWatermark;
+<a class="jxr_linenumber" name="250" href="#250">250</a>                     persistProc.persistLowWatermark(newLowWatermark); <em class="jxr_comment">// Async persist</em>
+<a class="jxr_linenumber" name="251" href="#251">251</a>                 }
+<a class="jxr_linenumber" name="252" href="#252">252</a>             }
+<a class="jxr_linenumber" name="253" href="#253">253</a>             event.getMonCtx().timerStop(<span class="jxr_string">"request.processor.commit.latency"</span>);
+<a class="jxr_linenumber" name="254" href="#254">254</a>             persistProc.addCommitToBatch(startTimestamp, commitTimestamp, c, event.getMonCtx());
+<a class="jxr_linenumber" name="255" href="#255">255</a> 
+<a class="jxr_linenumber" name="256" href="#256">256</a>         } <strong class="jxr_keyword">else</strong> {
 <a class="jxr_linenumber" name="257" href="#257">257</a> 
-<a class="jxr_linenumber" name="258" href="#258">258</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isCommitRetry = false;
-<a class="jxr_linenumber" name="259" href="#259">259</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> startTimestamp = 0;
-<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx;
-<a class="jxr_linenumber" name="261" href="#261">261</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> numCells = 0;
-<a class="jxr_linenumber" name="262" href="#262">262</a> 
-<a class="jxr_linenumber" name="263" href="#263">263</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_INLINE = 40;
-<a class="jxr_linenumber" name="264" href="#264">264</a>         <strong class="jxr_keyword">private</strong> Long writeSet[] = <strong class="jxr_keyword">new</strong> Long[MAX_INLINE];
-<a class="jxr_linenumber" name="265" href="#265">265</a>         <strong class="jxr_keyword">private</strong> Collection&lt;Long&gt; writeSetAsCollection = <strong class="jxr_keyword">null</strong>; <em class="jxr_comment">// for the case where there's more than MAX_INLINE</em>
+<a class="jxr_linenumber" name="258" href="#258">258</a>             event.getMonCtx().timerStop(<span class="jxr_string">"request.processor.commit.latency"</span>);
+<a class="jxr_linenumber" name="259" href="#259">259</a>             <strong class="jxr_keyword">if</strong> (isCommitRetry) { <em class="jxr_comment">// Re-check if it was already committed but the client retried due to a lag replying</em>
+<a class="jxr_linenumber" name="260" href="#260">260</a>                 persistProc.addCommitRetryToBatch(startTimestamp, c, event.getMonCtx());
+<a class="jxr_linenumber" name="261" href="#261">261</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="262" href="#262">262</a>                 persistProc.addAbortToBatch(startTimestamp, c, event.getMonCtx());
+<a class="jxr_linenumber" name="263" href="#263">263</a>             }
+<a class="jxr_linenumber" name="264" href="#264">264</a> 
+<a class="jxr_linenumber" name="265" href="#265">265</a>         }
 <a class="jxr_linenumber" name="266" href="#266">266</a> 
-<a class="jxr_linenumber" name="267" href="#267">267</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makeTimestampRequest(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
-<a class="jxr_linenumber" name="268" href="#268">268</a>             e.type = Type.TIMESTAMP;
-<a class="jxr_linenumber" name="269" href="#269">269</a>             e.channel = c;
-<a class="jxr_linenumber" name="270" href="#270">270</a>             e.monCtx = monCtx;
-<a class="jxr_linenumber" name="271" href="#271">271</a>         }
+<a class="jxr_linenumber" name="267" href="#267">267</a>     }
+<a class="jxr_linenumber" name="268" href="#268">268</a> 
+<a class="jxr_linenumber" name="269" href="#269">269</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> handleFence(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> event) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="270" href="#270">270</a>         <strong class="jxr_keyword">long</strong> tableID = event.getTableId();
+<a class="jxr_linenumber" name="271" href="#271">271</a>         Channel c = event.getChannel();
 <a class="jxr_linenumber" name="272" href="#272">272</a> 
-<a class="jxr_linenumber" name="273" href="#273">273</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makeCommitRequest(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e,
-<a class="jxr_linenumber" name="274" href="#274">274</a>                                       <strong class="jxr_keyword">long</strong> startTimestamp,
-<a class="jxr_linenumber" name="275" href="#275">275</a>                                       <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx,
-<a class="jxr_linenumber" name="276" href="#276">276</a>                                       Collection&lt;Long&gt; writeSet,
-<a class="jxr_linenumber" name="277" href="#277">277</a>                                       <strong class="jxr_keyword">boolean</strong> isRetry,
-<a class="jxr_linenumber" name="278" href="#278">278</a>                                       Channel c) {
-<a class="jxr_linenumber" name="279" href="#279">279</a>             e.monCtx = monCtx;
-<a class="jxr_linenumber" name="280" href="#280">280</a>             e.type = Type.COMMIT;
-<a class="jxr_linenumber" name="281" href="#281">281</a>             e.channel = c;
-<a class="jxr_linenumber" name="282" href="#282">282</a>             e.startTimestamp = startTimestamp;
-<a class="jxr_linenumber" name="283" href="#283">283</a>             e.isCommitRetry = isRetry;
-<a class="jxr_linenumber" name="284" href="#284">284</a>             <strong class="jxr_keyword">if</strong> (writeSet.size() &gt; MAX_INLINE) {
-<a class="jxr_linenumber" name="285" href="#285">285</a>                 e.numCells = writeSet.size();
-<a class="jxr_linenumber" name="286" href="#286">286</a>                 e.writeSetAsCollection = writeSet;
-<a class="jxr_linenumber" name="287" href="#287">287</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="288" href="#288">288</a>                 e.writeSetAsCollection = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="289" href="#289">289</a>                 e.numCells = writeSet.size();
-<a class="jxr_linenumber" name="290" href="#290">290</a>                 <strong class="jxr_keyword">int</strong> i = 0;
-<a class="jxr_linenumber" name="291" href="#291">291</a>                 <strong class="jxr_keyword">for</strong> (Long cellId : writeSet) {
-<a class="jxr_linenumber" name="292" href="#292">292</a>                     e.writeSet[i] = cellId;
-<a class="jxr_linenumber" name="293" href="#293">293</a>                     i++;
-<a class="jxr_linenumber" name="294" href="#294">294</a>                 }
-<a class="jxr_linenumber" name="295" href="#295">295</a>             }
-<a class="jxr_linenumber" name="296" href="#296">296</a> 
-<a class="jxr_linenumber" name="297" href="#297">297</a>         }
-<a class="jxr_linenumber" name="298" href="#298">298</a> 
-<a class="jxr_linenumber" name="299" href="#299">299</a>         <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> getMonCtx() {
-<a class="jxr_linenumber" name="300" href="#300">300</a>             <strong class="jxr_keyword">return</strong> monCtx;
-<a class="jxr_linenumber" name="301" href="#301">301</a>         }
-<a class="jxr_linenumber" name="302" href="#302">302</a> 
-<a class="jxr_linenumber" name="303" href="#303">303</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> getType() {
-<a class="jxr_linenumber" name="304" href="#304">304</a>             <strong class="jxr_keyword">return</strong> type;
-<a class="jxr_linenumber" name="305" href="#305">305</a>         }
+<a class="jxr_linenumber" name="273" href="#273">273</a>         <strong class="jxr_keyword">long</strong> fenceTimestamp = timestampOracle.next();
+<a class="jxr_linenumber" name="274" href="#274">274</a> 
+<a class="jxr_linenumber" name="275" href="#275">275</a>         tableFences.put(tableID, fenceTimestamp);
+<a class="jxr_linenumber" name="276" href="#276">276</a>         persistProc.addFenceToBatch(tableID, fenceTimestamp, c, event.getMonCtx());
+<a class="jxr_linenumber" name="277" href="#277">277</a>     }
+<a class="jxr_linenumber" name="278" href="#278">278</a> 
+<a class="jxr_linenumber" name="279" href="#279">279</a>     @Override
+<a class="jxr_linenumber" name="280" href="#280">280</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="281" href="#281">281</a> 
+<a class="jxr_linenumber" name="282" href="#282">282</a>         LOG.info(<span class="jxr_string">"Terminating Request Processor..."</span>);
+<a class="jxr_linenumber" name="283" href="#283">283</a>         disruptor.halt();
+<a class="jxr_linenumber" name="284" href="#284">284</a>         disruptor.shutdown();
+<a class="jxr_linenumber" name="285" href="#285">285</a>         LOG.info(<span class="jxr_string">"\tRequest Processor Disruptor shutdown"</span>);
+<a class="jxr_linenumber" name="286" href="#286">286</a>         disruptorExec.shutdownNow();
+<a class="jxr_linenumber" name="287" href="#287">287</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="288" href="#288">288</a>             disruptorExec.awaitTermination(3, SECONDS);
+<a class="jxr_linenumber" name="289" href="#289">289</a>             LOG.info(<span class="jxr_string">"\tRequest Processor Disruptor executor shutdown"</span>);
+<a class="jxr_linenumber" name="290" href="#290">290</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
+<a class="jxr_linenumber" name="291" href="#291">291</a>             LOG.error(<span class="jxr_string">"Interrupted whilst finishing Request Processor Disruptor executor"</span>);
+<a class="jxr_linenumber" name="292" href="#292">292</a>             Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="293" href="#293">293</a>         }
+<a class="jxr_linenumber" name="294" href="#294">294</a>         LOG.info(<span class="jxr_string">"Request Processor terminated"</span>);
+<a class="jxr_linenumber" name="295" href="#295">295</a> 
+<a class="jxr_linenumber" name="296" href="#296">296</a>     }
+<a class="jxr_linenumber" name="297" href="#297">297</a> 
+<a class="jxr_linenumber" name="298" href="#298">298</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> <strong class="jxr_keyword">implements</strong> Iterable&lt;Long&gt; {
+<a class="jxr_linenumber" name="299" href="#299">299</a> 
+<a class="jxr_linenumber" name="300" href="#300">300</a>         enum <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> {
+<a class="jxr_linenumber" name="301" href="#301">301</a>             TIMESTAMP, COMMIT, FENCE
+<a class="jxr_linenumber" name="302" href="#302">302</a>         }
+<a class="jxr_linenumber" name="303" href="#303">303</a> 
+<a class="jxr_linenumber" name="304" href="#304">304</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> type = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="305" href="#305">305</a>         <strong class="jxr_keyword">private</strong> Channel channel = <strong class="jxr_keyword">null</strong>;
 <a class="jxr_linenumber" name="306" href="#306">306</a> 
-<a class="jxr_linenumber" name="307" href="#307">307</a>         <strong class="jxr_keyword">long</strong> getStartTimestamp() {
-<a class="jxr_linenumber" name="308" href="#308">308</a>             <strong class="jxr_keyword">return</strong> startTimestamp;
-<a class="jxr_linenumber" name="309" href="#309">309</a>         }
-<a class="jxr_linenumber" name="310" href="#310">310</a> 
-<a class="jxr_linenumber" name="311" href="#311">311</a>         Channel getChannel() {
-<a class="jxr_linenumber" name="312" href="#312">312</a>             <strong class="jxr_keyword">return</strong> channel;
-<a class="jxr_linenumber" name="313" href="#313">313</a>         }
-<a class="jxr_linenumber" name="314" href="#314">314</a> 
-<a class="jxr_linenumber" name="315" href="#315">315</a>         @Override
-<a class="jxr_linenumber" name="316" href="#316">316</a>         <strong class="jxr_keyword">public</strong> Iterator&lt;Long&gt; iterator() {
-<a class="jxr_linenumber" name="317" href="#317">317</a> 
-<a class="jxr_linenumber" name="318" href="#318">318</a>             <strong class="jxr_keyword">if</strong> (writeSetAsCollection != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="319" href="#319">319</a>                 <strong class="jxr_keyword">return</strong> writeSetAsCollection.iterator();
-<a class="jxr_linenumber" name="320" href="#320">320</a>             }
-<a class="jxr_linenumber" name="321" href="#321">321</a> 
-<a class="jxr_linenumber" name="322" href="#322">322</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> Iterator&lt;Long&gt;() {
-<a class="jxr_linenumber" name="323" href="#323">323</a>                 <strong class="jxr_keyword">int</strong> i = 0;
+<a class="jxr_linenumber" name="307" href="#307">307</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isCommitRetry = false;
+<a class="jxr_linenumber" name="308" href="#308">308</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> startTimestamp = 0;
+<a class="jxr_linenumber" name="309" href="#309">309</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx;
+<a class="jxr_linenumber" name="310" href="#310">310</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> numCells = 0;
+<a class="jxr_linenumber" name="311" href="#311">311</a> 
+<a class="jxr_linenumber" name="312" href="#312">312</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_INLINE = 40;
+<a class="jxr_linenumber" name="313" href="#313">313</a>         <strong class="jxr_keyword">private</strong> Long writeSet[] = <strong class="jxr_keyword">new</strong> Long[MAX_INLINE];
+<a class="jxr_linenumber" name="314" href="#314">314</a>         <strong class="jxr_keyword">private</strong> Collection&lt;Long&gt; writeSetAsCollection = <strong class="jxr_keyword">null</strong>; <em class="jxr_comment">// for the case where there's more than MAX_INLINE</em>
+<a class="jxr_linenumber" name="315" href="#315">315</a> 
+<a class="jxr_linenumber" name="316" href="#316">316</a>         <strong class="jxr_keyword">private</strong> Collection&lt;Long&gt; tableIdSet = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="317" href="#317">317</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> tableID = 0;
+<a class="jxr_linenumber" name="318" href="#318">318</a> 
+<a class="jxr_linenumber" name="319" href="#319">319</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makeTimestampRequest(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
+<a class="jxr_linenumber" name="320" href="#320">320</a>             e.type = Type.TIMESTAMP;
+<a class="jxr_linenumber" name="321" href="#321">321</a>             e.channel = c;
+<a class="jxr_linenumber" name="322" href="#322">322</a>             e.monCtx = monCtx;
+<a class="jxr_linenumber" name="323" href="#323">323</a>         }
 <a class="jxr_linenumber" name="324" href="#324">324</a> 
-<a class="jxr_linenumber" name="325" href="#325">325</a>                 @Override
-<a class="jxr_linenumber" name="326" href="#326">326</a>                 <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasNext() {
-<a class="jxr_linenumber" name="327" href="#327">327</a>                     <strong class="jxr_keyword">return</strong> i &lt; numCells;
-<a class="jxr_linenumber" name="328" href="#328">328</a>                 }
-<a class="jxr_linenumber" name="329" href="#329">329</a> 
-<a class="jxr_linenumber" name="330" href="#330">330</a>                 @Override
-<a class="jxr_linenumber" name="331" href="#331">331</a>                 <strong class="jxr_keyword">public</strong> Long next() {
-<a class="jxr_linenumber" name="332" href="#332">332</a>                     <strong class="jxr_keyword">if</strong> (!hasNext()) {
-<a class="jxr_linenumber" name="333" href="#333">333</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> NoSuchElementException();
-<a class="jxr_linenumber" name="334" href="#334">334</a>                     }
-<a class="jxr_linenumber" name="335" href="#335">335</a>                     <strong class="jxr_keyword">return</strong> writeSet[i++];
-<a class="jxr_linenumber" name="336" href="#336">336</a>                 }
-<a class="jxr_linenumber" name="337" href="#337">337</a> 
-<a class="jxr_linenumber" name="338" href="#338">338</a>                 @Override
-<a class="jxr_linenumber" name="339" href="#339">339</a>                 <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> remove() {
-<a class="jxr_linenumber" name="340" href="#340">340</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException();
-<a class="jxr_linenumber" name="341" href="#341">341</a>                 }
-<a class="jxr_linenumber" name="342" href="#342">342</a>             };
-<a class="jxr_linenumber" name="343" href="#343">343</a> 
-<a class="jxr_linenumber" name="344" href="#344">344</a>         }
-<a class="jxr_linenumber" name="345" href="#345">345</a> 
-<a class="jxr_linenumber" name="346" href="#346">346</a>         Iterable&lt;Long&gt; writeSet() {
-<a class="jxr_linenumber" name="347" href="#347">347</a> 
-<a class="jxr_linenumber" name="348" href="#348">348</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="349" href="#349">349</a> 
+<a class="jxr_linenumber" name="325" href="#325">325</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makeCommitRequest(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e,
+<a class="jxr_linenumber" name="326" href="#326">326</a>                                       <strong class="jxr_keyword">long</strong> startTimestamp,
+<a class="jxr_linenumber" name="327" href="#327">327</a>                                       <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx,
+<a class="jxr_linenumber" name="328" href="#328">328</a>                                       Collection&lt;Long&gt; writeSet,
+<a class="jxr_linenumber" name="329" href="#329">329</a>                                       Collection&lt;Long&gt; TableIdSet,
+<a class="jxr_linenumber" name="330" href="#330">330</a>                                       <strong class="jxr_keyword">boolean</strong> isRetry,
+<a class="jxr_linenumber" name="331" href="#331">331</a>                                       Channel c) {
+<a class="jxr_linenumber" name="332" href="#332">332</a>             e.monCtx = monCtx;
+<a class="jxr_linenumber" name="333" href="#333">333</a>             e.type = Type.COMMIT;
+<a class="jxr_linenumber" name="334" href="#334">334</a>             e.channel = c;
+<a class="jxr_linenumber" name="335" href="#335">335</a>             e.startTimestamp = startTimestamp;
+<a class="jxr_linenumber" name="336" href="#336">336</a>             e.isCommitRetry = isRetry;
+<a class="jxr_linenumber" name="337" href="#337">337</a>             <strong class="jxr_keyword">if</strong> (writeSet.size() &gt; MAX_INLINE) {
+<a class="jxr_linenumber" name="338" href="#338">338</a>                 e.numCells = writeSet.size();
+<a class="jxr_linenumber" name="339" href="#339">339</a>                 e.writeSetAsCollection = writeSet;
+<a class="jxr_linenumber" name="340" href="#340">340</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="341" href="#341">341</a>                 e.writeSetAsCollection = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="342" href="#342">342</a>                 e.numCells = writeSet.size();
+<a class="jxr_linenumber" name="343" href="#343">343</a>                 <strong class="jxr_keyword">int</strong> i = 0;
+<a class="jxr_linenumber" name="344" href="#344">344</a>                 <strong class="jxr_keyword">for</strong> (Long cellId : writeSet) {
+<a class="jxr_linenumber" name="345" href="#345">345</a>                     e.writeSet[i] = cellId;
+<a class="jxr_linenumber" name="346" href="#346">346</a>                     ++i;
+<a class="jxr_linenumber" name="347" href="#347">347</a>                 }
+<a class="jxr_linenumber" name="348" href="#348">348</a>             }
+<a class="jxr_linenumber" name="349" href="#349">349</a>             e.tableIdSet = TableIdSet;
 <a class="jxr_linenumber" name="350" href="#350">350</a>         }
 <a class="jxr_linenumber" name="351" href="#351">351</a> 
-<a class="jxr_linenumber" name="352" href="#352">352</a>         <strong class="jxr_keyword">boolean</strong> isCommitRetry() {
-<a class="jxr_linenumber" name="353" href="#353">353</a>             <strong class="jxr_keyword">return</strong> isCommitRetry;
-<a class="jxr_linenumber" name="354" href="#354">354</a>         }
-<a class="jxr_linenumber" name="355" href="#355">355</a> 
-<a class="jxr_linenumber" name="356" href="#356">356</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> EventFactory&lt;RequestEvent&gt; EVENT_FACTORY = <strong class="jxr_keyword">new</strong> EventFactory&lt;RequestEvent&gt;() {
-<a class="jxr_linenumber" name="357" href="#357">357</a>             @Override
-<a class="jxr_linenumber" name="358" href="#358">358</a>             <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> newInstance() {
-<a class="jxr_linenumber" name="359" href="#359">359</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a>();
-<a class="jxr_linenumber" name="360" href="#360">360</a>             }
-<a class="jxr_linenumber" name="361" href="#361">361</a>         };
-<a class="jxr_linenumber" name="362" href="#362">362</a> 
-<a class="jxr_linenumber" name="363" href="#363">363</a>     }
-<a class="jxr_linenumber" name="364" href="#364">364</a> 
-<a class="jxr_linenumber" name="365" href="#365">365</a> }
+<a class="jxr_linenumber" name="352" href="#352">352</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makeFenceRequest(<a href="../../../../org/apache/omid/tso/RequestProcessorImpl.html">RequestEvent</a> e,
+<a class="jxr_linenumber" name="353" href="#353">353</a>                                      <strong class="jxr_keyword">long</strong> tableID,
+<a class="jxr_linenumber" name="354" href="#354">354</a>                                      Channel c,
+<a class="jxr_linenumber" name="355" href="#355">355</a>                                      <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
+<a class="jxr_linenumber" name="356" href="#356">356</a>             e.type = Type.FENCE;
+<a class="jxr_linenumber" name="357" href="#357">357</a>             e.channel = c;
+<a class="jxr_linenumber" name="358" href="#358">358</a>             e.monCtx = monCtx;
+<a class="jxr_linenumber" name="359" href="#359">359</a>             e.tableID = tableID;
+<a class="jxr_linenumber" name="360" href="#360">360</a>         }
+<a class="jxr_linenumber" name="361" href="#361">361</a> 
+<a class="jxr_linenumber" name="362" href="#362">362</a>         <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> getMonCtx() {
+<a class="jxr_linenumber" name="363" href="#363">363</a>             <strong class="jxr_keyword">return</strong> monCtx;
+<a class="jxr_linenumber" name="364" href="#364">364</a>         }
+<a class="jxr_linenumber" name="365" href="#365">365</a> 
+<a class="jxr_linenumber" name="366" href="#366">366</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> getType() {
+<a class="jxr_linenumber" name="367" href="#367">367</a>             <strong class="jxr_keyword">return</strong> type;
+<a class="jxr_linenumber" name="368" href="#368">368</a>         }
+<a class="jxr_linenumber" name="369" href="#369">369</a> 
+<a class="jxr_linenumber" name="370" href="#370">370</a>         <strong class="jxr_keyword">long</strong> getStartTimestamp() {
+<a class="jxr_linenumber" name="371" href="#371">371</a>             <strong class="jxr_keyword">return</strong> startTimestamp;
+<a class="jxr_linenumber" name="372" href="#372">372</a>         }
+<a class="jxr_linenumber" name="373" href="#373">373</a> 
+<a class="jxr_linenumber" name="374" href="#374">374</a>         Channel getChannel() {
+<a class="jxr_linenumber" name="375" href="#375">375</a>             <strong class="jxr_keyword">return</strong> channel;
+<a class="jxr_linenumber" name="376" href="#376">376</a>         }
+<a class="jxr_linenumber" name="377" href="#377">377</a> 
+<a class="jxr_linenumber" name="378" href="#378">378</a>         Collection&lt;Long&gt; getTableIdSet() {
+<a class="jxr_linenumber" name="379" href="#379">379</a>             <strong class="jxr_keyword">return</strong> tableIdSet;
+<a class="jxr_linenumber" name="380" href="#380">380</a>         }
+<a class="jxr_linenumber" name="381" href="#381">381</a> 
+<a class="jxr_linenumber" name="382" href="#382">382</a>         <strong class="jxr_keyword">long</strong> getTableId() {
+<a class="jxr_linenumber" name="383" href="#383">383</a>             <strong class="jxr_keyword">return</strong> tableID;
+<a class="jxr_linenumber" name="384" href="#384">384</a>         }
+<a class="jxr_linenumber" name="385" href="#385">385</a> 
+<a class="jxr_linenumber" name="386" href="#386">386</a>         @Override
+<a class="jxr_linenumber" name="387" href="#387">387</a>         <strong class="jxr_keyword">public</strong> Iterator&lt;Long&gt; iterator() {
+<a class="jxr_linenumber" name="388" href="#388">388</a> 
+<a class="jxr_linenumber" name="389" href="#389">389</a>             <strong class="jxr_keyword">if</strong> (writeSetAsCollection != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="390" href="#390">390</a>                 <strong class="jxr_keyword">return</strong> writeSetAsCollection.iterator();
+<a class="jxr_linenumber" name="391" href="#391">391</a>             }
+<a class="jxr_linenumber" name="392" href="#392">392</a> 
+<a class="jxr_linenumber" name="393" href="#393">393</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> Iterator&lt;Long&gt;() {
+<a class="jxr_linenumber" name="394" href="#394">394</a>                 <strong class="jxr_keyword">int</strong> i = 0;
+<a class="jxr_linenumber" name="395" href="#395">395</a> 
+<a class="jxr_linenumber" name="396" href="#396">396</a>                 @Override
+<a class="jxr_linenumber" name="397" href="#397">397</a>                 <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasNext() {
+<a class="jxr_linenumber" name="398" href="#398">398</a>                     <strong class="jxr_keyword">return</strong> i &lt; numCells;
+<a class="jxr_linenumber" name="399" href="#399">399</a>                 }
+<a class="jxr_linenumber" 

<TRUNCATED>


[12/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/CellUtils.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/CellUtils.html b/xref/org/apache/omid/transaction/CellUtils.html
index f416c60..5f0ac9d 100644
--- a/xref/org/apache/omid/transaction/CellUtils.html
+++ b/xref/org/apache/omid/transaction/CellUtils.html
@@ -27,387 +27,441 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Objects;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Objects.ToStringHelper;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Preconditions;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.google.common.hash.Hasher;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> com.google.common.hash.Hashing;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellComparator;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.SortedMap;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.TreeMap;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
 <a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
 <a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HConstants;
 <a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
 <a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
 <a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
 <a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.SortedMap;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.TreeMap;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>  @SuppressWarnings(<span class="jxr_string">"all"</span>)
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellUtils</a> {
-<a class="jxr_linenumber" name="48" href="#48">48</a>  
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(CellUtils.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] SHADOW_CELL_SUFFIX = <span class="jxr_string">"\u0080"</span>.getBytes(Charsets.UTF_8); <em class="jxr_comment">// Non printable char (128 ASCII)</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">static</strong> byte[] DELETE_TOMBSTONE = Bytes.toBytes(<span class="jxr_string">"__OMID_TOMBSTONE__"</span>);
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment">     * Utility interface to get rid of the dependency on HBase server package</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">interface</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellGetter</a> {
-<a class="jxr_linenumber" name="57" href="#57">57</a>          Result get(Get get) <strong class="jxr_keyword">throws</strong> IOException;
-<a class="jxr_linenumber" name="58" href="#58">58</a>      }
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment">     * Returns true if the particular cell passed exists in the datastore.</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">     * @param row row</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment">     * @param family column family</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">     * @param qualifier columnn name</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment">     * @param version version</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment">     * @param cellGetter an instance of CellGetter</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment">     * @return true if the cell specified exists. false otherwise</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     * @throws IOException</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> hasCell(byte[] row,
-<a class="jxr_linenumber" name="71" href="#71">71</a>                                    byte[] family,
-<a class="jxr_linenumber" name="72" href="#72">72</a>                                    byte[] qualifier,
-<a class="jxr_linenumber" name="73" href="#73">73</a>                                    <strong class="jxr_keyword">long</strong> version,
-<a class="jxr_linenumber" name="74" href="#74">74</a>                                    <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellGetter</a> cellGetter)
-<a class="jxr_linenumber" name="75" href="#75">75</a>              <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="76" href="#76">76</a>          Get get = <strong class="jxr_keyword">new</strong> Get(row);
-<a class="jxr_linenumber" name="77" href="#77">77</a>          get.addColumn(family, qualifier);
-<a class="jxr_linenumber" name="78" href="#78">78</a>          get.setTimeStamp(version);
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          Result result = cellGetter.get(get);
-<a class="jxr_linenumber" name="81" href="#81">81</a>  
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">return</strong> result.containsColumn(family, qualifier);
-<a class="jxr_linenumber" name="83" href="#83">83</a>      }
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>  <em class="jxr_javadoccomment">     * Returns true if the particular cell passed has a corresponding shadow cell in the datastore</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>  <em class="jxr_javadoccomment">     * @param row row</em>
-<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     * @param family column family</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     * @param qualifier columnn name</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     * @param version version</em>
-<a class="jxr_linenumber" name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     * @param cellGetter an instance of CellGetter</em>
-<a class="jxr_linenumber" name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     * @return true if it has a shadow cell. false otherwise.</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     * @throws IOException</em>
-<a class="jxr_linenumber" name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="95" href="#95">95</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> hasShadowCell(byte[] row,
-<a class="jxr_linenumber" name="96" href="#96">96</a>                                          byte[] family,
-<a class="jxr_linenumber" name="97" href="#97">97</a>                                          byte[] qualifier,
-<a class="jxr_linenumber" name="98" href="#98">98</a>                                          <strong class="jxr_keyword">long</strong> version,
-<a class="jxr_linenumber" name="99" href="#99">99</a>                                          <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellGetter</a> cellGetter) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">return</strong> hasCell(row, family, addShadowCellSuffix(qualifier),
-<a class="jxr_linenumber" name="101" href="#101">101</a>                 version, cellGetter);
-<a class="jxr_linenumber" name="102" href="#102">102</a>     }
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="105" href="#105">105</a> <em class="jxr_javadoccomment">     * Builds a new qualifier composed of the HBase qualifier passed + the shadow cell suffix.</em>
-<a class="jxr_linenumber" name="106" href="#106">106</a> <em class="jxr_javadoccomment">     * @param qualifierArray the qualifier to be suffixed</em>
-<a class="jxr_linenumber" name="107" href="#107">107</a> <em class="jxr_javadoccomment">     * @param qualOffset the offset where the qualifier starts</em>
-<a class="jxr_linenumber" name="108" href="#108">108</a> <em class="jxr_javadoccomment">     * @param qualLength the qualifier length</em>
-<a class="jxr_linenumber" name="109" href="#109">109</a> <em class="jxr_javadoccomment">     * @return the suffixed qualifier</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> byte[] addShadowCellSuffix(byte[] qualifierArray, <strong class="jxr_keyword">int</strong> qualOffset, <strong class="jxr_keyword">int</strong> qualLength) {
-<a class="jxr_linenumber" name="112" href="#112">112</a>         byte[] result = <strong class="jxr_keyword">new</strong> byte[qualLength + SHADOW_CELL_SUFFIX.length];
-<a class="jxr_linenumber" name="113" href="#113">113</a>         System.arraycopy(qualifierArray, qualOffset, result, 0, qualLength);
-<a class="jxr_linenumber" name="114" href="#114">114</a>         System.arraycopy(SHADOW_CELL_SUFFIX, 0, result, qualLength, SHADOW_CELL_SUFFIX.length);
-<a class="jxr_linenumber" name="115" href="#115">115</a>         <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="116" href="#116">116</a>     }
-<a class="jxr_linenumber" name="117" href="#117">117</a> 
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="119" href="#119">119</a> <em class="jxr_javadoccomment">     * Builds a new qualifier composed of the HBase qualifier passed + the shadow cell suffix.</em>
-<a class="jxr_linenumber" name="120" href="#120">120</a> <em class="jxr_javadoccomment">     * Contains a reduced signature to avoid boilerplate code in client side.</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a> <em class="jxr_javadoccomment">     * @param qualifier</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a> <em class="jxr_javadoccomment">     *            the qualifier to be suffixed</em>
-<a class="jxr_linenumber" name="123" href="#123">123</a> <em class="jxr_javadoccomment">     * @return the suffixed qualifier</em>
-<a class="jxr_linenumber" name="124" href="#124">124</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> byte[] addShadowCellSuffix(byte[] qualifier) {
-<a class="jxr_linenumber" name="126" href="#126">126</a>         <strong class="jxr_keyword">return</strong> addShadowCellSuffix(qualifier, 0, qualifier.length);
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.HBaseShims;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Objects;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Objects.ToStringHelper;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Preconditions;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> com.google.common.hash.Hasher;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> com.google.common.hash.Hashing;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>  @SuppressWarnings(<span class="jxr_string">"all"</span>)
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellUtils</a> {
+<a class="jxr_linenumber" name="49" href="#49">49</a>  
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(CellUtils.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] SHADOW_CELL_SUFFIX = <span class="jxr_string">"\u0080"</span>.getBytes(Charsets.UTF_8); <em class="jxr_comment">// Non printable char (128 ASCII)</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <em class="jxr_comment">//Prefix starts with 0 to apear before other cells in TransactionVisibilityFilter</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] SHADOW_CELL_PREFIX = <span class="jxr_string">"\u0000\u0080"</span>.getBytes(Charsets.UTF_8);
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">static</strong> byte[] DELETE_TOMBSTONE = HConstants.EMPTY_BYTE_ARRAY;
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">static</strong> byte[] LEGACY_DELETE_TOMBSTONE = Bytes.toBytes(<span class="jxr_string">"__OMID_TOMBSTONE__"</span>);
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] FAMILY_DELETE_QUALIFIER = HConstants.EMPTY_BYTE_ARRAY;
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TRANSACTION_ATTRIBUTE = <span class="jxr_string">"__OMID_TRANSACTION__"</span>;
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment">/</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment">    public static final String CLIENT_GET_ATTRIBUTE = "__OMID_CLIENT_GET__";</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment">    public static final String CONFLICT_FREE_MUTATION = "__OMID_CONFLICT_FREE_MUTATION__";</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">    /**</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment">     * Utility interface to get rid of the dependency on HBase server package</em>
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">interface</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellGetter</a> {
+<a class="jxr_linenumber" name="66" href="#66">66</a>          Result get(Get get) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="67" href="#67">67</a>      }
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * Returns true if the particular cell passed exists in the datastore.</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     * @param row row</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     * @param family column family</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     * @param qualifier columnn name</em>
+<a class="jxr_linenumber" name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     * @param version version</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>  <em class="jxr_javadoccomment">     * @param cellGetter an instance of CellGetter</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>  <em class="jxr_javadoccomment">     * @return true if the cell specified exists. false otherwise</em>
+<a class="jxr_linenumber" name="77" href="#77">77</a>  <em class="jxr_javadoccomment">     * @throws IOException</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> hasCell(byte[] row,
+<a class="jxr_linenumber" name="80" href="#80">80</a>                                    byte[] family,
+<a class="jxr_linenumber" name="81" href="#81">81</a>                                    byte[] qualifier,
+<a class="jxr_linenumber" name="82" href="#82">82</a>                                    <strong class="jxr_keyword">long</strong> version,
+<a class="jxr_linenumber" name="83" href="#83">83</a>                                    <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellGetter</a> cellGetter)
+<a class="jxr_linenumber" name="84" href="#84">84</a>              <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="85" href="#85">85</a>          Get get = <strong class="jxr_keyword">new</strong> Get(row);
+<a class="jxr_linenumber" name="86" href="#86">86</a>          get.addColumn(family, qualifier);
+<a class="jxr_linenumber" name="87" href="#87">87</a>          get.setTimeStamp(version);
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>          Result result = cellGetter.get(get);
+<a class="jxr_linenumber" name="90" href="#90">90</a>  
+<a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">return</strong> result.containsColumn(family, qualifier);
+<a class="jxr_linenumber" name="92" href="#92">92</a>      }
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="95" href="#95">95</a>  <em class="jxr_javadoccomment">     * Returns true if the particular cell passed has a corresponding shadow cell in the datastore</em>
+<a class="jxr_linenumber" name="96" href="#96">96</a>  <em class="jxr_javadoccomment">     * @param row row</em>
+<a class="jxr_linenumber" name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     * @param family column family</em>
+<a class="jxr_linenumber" name="98" href="#98">98</a>  <em class="jxr_javadoccomment">     * @param qualifier columnn name</em>
+<a class="jxr_linenumber" name="99" href="#99">99</a>  <em class="jxr_javadoccomment">     * @param version version</em>
+<a class="jxr_linenumber" name="100" href="#100">100</a> <em class="jxr_javadoccomment">     * @param cellGetter an instance of CellGetter</em>
+<a class="jxr_linenumber" name="101" href="#101">101</a> <em class="jxr_javadoccomment">     * @return true if it has a shadow cell. false otherwise.</em>
+<a class="jxr_linenumber" name="102" href="#102">102</a> <em class="jxr_javadoccomment">     * @throws IOException</em>
+<a class="jxr_linenumber" name="103" href="#103">103</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> hasShadowCell(byte[] row,
+<a class="jxr_linenumber" name="105" href="#105">105</a>                                         byte[] family,
+<a class="jxr_linenumber" name="106" href="#106">106</a>                                         byte[] qualifier,
+<a class="jxr_linenumber" name="107" href="#107">107</a>                                         <strong class="jxr_keyword">long</strong> version,
+<a class="jxr_linenumber" name="108" href="#108">108</a>                                         <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellGetter</a> cellGetter) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">return</strong> hasCell(row, family, addShadowCellSuffixPrefix(qualifier),
+<a class="jxr_linenumber" name="110" href="#110">110</a>                 version, cellGetter);
+<a class="jxr_linenumber" name="111" href="#111">111</a>     }
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="114" href="#114">114</a> <em class="jxr_javadoccomment">     * Builds a new qualifier composed of the HBase qualifier passed + the shadow cell suffix.</em>
+<a class="jxr_linenumber" name="115" href="#115">115</a> <em class="jxr_javadoccomment">     * @param qualifierArray the qualifier to be suffixed</em>
+<a class="jxr_linenumber" name="116" href="#116">116</a> <em class="jxr_javadoccomment">     * @param qualOffset the offset where the qualifier starts</em>
+<a class="jxr_linenumber" name="117" href="#117">117</a> <em class="jxr_javadoccomment">     * @param qualLength the qualifier length</em>
+<a class="jxr_linenumber" name="118" href="#118">118</a> <em class="jxr_javadoccomment">     * @return the suffixed qualifier</em>
+<a class="jxr_linenumber" name="119" href="#119">119</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> byte[] addShadowCellSuffixPrefix(byte[] qualifierArray, <strong class="jxr_keyword">int</strong> qualOffset, <strong class="jxr_keyword">int</strong> qualLength) {
+<a class="jxr_linenumber" name="121" href="#121">121</a>         byte[] result = <strong class="jxr_keyword">new</strong> byte[qualLength + SHADOW_CELL_SUFFIX.length + SHADOW_CELL_PREFIX.length];
+<a class="jxr_linenumber" name="122" href="#122">122</a>         System.arraycopy(SHADOW_CELL_PREFIX, 0, result,0 , SHADOW_CELL_PREFIX.length);
+<a class="jxr_linenumber" name="123" href="#123">123</a>         System.arraycopy(qualifierArray, qualOffset, result, SHADOW_CELL_PREFIX.length, qualLength);
+<a class="jxr_linenumber" name="124" href="#124">124</a>         System.arraycopy(SHADOW_CELL_SUFFIX, 0, result, qualLength + SHADOW_CELL_PREFIX.length,
+<a class="jxr_linenumber" name="125" href="#125">125</a>                 SHADOW_CELL_SUFFIX.length);
+<a class="jxr_linenumber" name="126" href="#126">126</a>         <strong class="jxr_keyword">return</strong> result;
 <a class="jxr_linenumber" name="127" href="#127">127</a>     }
 <a class="jxr_linenumber" name="128" href="#128">128</a> 
 <a class="jxr_linenumber" name="129" href="#129">129</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="130" href="#130">130</a> <em class="jxr_javadoccomment">     * Builds a new qualifier removing the shadow cell suffix from the</em>
-<a class="jxr_linenumber" name="131" href="#131">131</a> <em class="jxr_javadoccomment">     * passed HBase qualifier.</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a> <em class="jxr_javadoccomment">     * @param qualifier the qualifier to remove the suffix from</em>
-<a class="jxr_linenumber" name="133" href="#133">133</a> <em class="jxr_javadoccomment">     * @param qualOffset the offset where the qualifier starts</em>
-<a class="jxr_linenumber" name="134" href="#134">134</a> <em class="jxr_javadoccomment">     * @param qualLength the qualifier length</em>
-<a class="jxr_linenumber" name="135" href="#135">135</a> <em class="jxr_javadoccomment">     * @return the new qualifier without the suffix</em>
-<a class="jxr_linenumber" name="136" href="#136">136</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> byte[] removeShadowCellSuffix(byte[] qualifier, <strong class="jxr_keyword">int</strong> qualOffset, <strong class="jxr_keyword">int</strong> qualLength) {
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>         <strong class="jxr_keyword">if</strong> (endsWith(qualifier, qualOffset, qualLength, SHADOW_CELL_SUFFIX)) {
-<a class="jxr_linenumber" name="140" href="#140">140</a>             <strong class="jxr_keyword">return</strong> Arrays.copyOfRange(qualifier,
-<a class="jxr_linenumber" name="141" href="#141">141</a>                     qualOffset,
-<a class="jxr_linenumber" name="142" href="#142">142</a>                     qualOffset + (qualLength - SHADOW_CELL_SUFFIX.length));
-<a class="jxr_linenumber" name="143" href="#143">143</a>         }
-<a class="jxr_linenumber" name="144" href="#144">144</a> 
-<a class="jxr_linenumber" name="145" href="#145">145</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
-<a class="jxr_linenumber" name="146" href="#146">146</a>                 <span class="jxr_string">"Can't find shadow cell suffix in qualifier "</span>
-<a class="jxr_linenumber" name="147" href="#147">147</a>                         + Bytes.toString(qualifier));
-<a class="jxr_linenumber" name="148" href="#148">148</a>     }
-<a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="151" href="#151">151</a> <em class="jxr_javadoccomment">     * Returns the qualifier length removing the shadow cell suffix. In case that que suffix is not found,</em>
-<a class="jxr_linenumber" name="152" href="#152">152</a> <em class="jxr_javadoccomment">     * just returns the length of the qualifier passed.</em>
-<a class="jxr_linenumber" name="153" href="#153">153</a> <em class="jxr_javadoccomment">     * @param qualifier the qualifier to remove the suffix from</em>
-<a class="jxr_linenumber" name="154" href="#154">154</a> <em class="jxr_javadoccomment">     * @param qualOffset the offset where the qualifier starts</em>
-<a class="jxr_linenumber" name="155" href="#155">155</a> <em class="jxr_javadoccomment">     * @param qualLength the qualifier length</em>
-<a class="jxr_linenumber" name="156" href="#156">156</a> <em class="jxr_javadoccomment">     * @return the qualifier length without the suffix</em>
-<a class="jxr_linenumber" name="157" href="#157">157</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> qualifierLengthFromShadowCellQualifier(byte[] qualifier, <strong class="jxr_keyword">int</strong> qualOffset, <strong class="jxr_keyword">int</strong> qualLength) {
+<a class="jxr_linenumber" name="130" href="#130">130</a> <em class="jxr_javadoccomment">     * Builds a new qualifier composed of the HBase qualifier passed + the shadow cell suffix.</em>
+<a class="jxr_linenumber" name="131" href="#131">131</a> <em class="jxr_javadoccomment">     * Contains a reduced signature to avoid boilerplate code in client side.</em>
+<a class="jxr_linenumber" name="132" href="#132">132</a> <em class="jxr_javadoccomment">     * @param qualifier</em>
+<a class="jxr_linenumber" name="133" href="#133">133</a> <em class="jxr_javadoccomment">     *            the qualifier to be suffixed</em>
+<a class="jxr_linenumber" name="134" href="#134">134</a> <em class="jxr_javadoccomment">     * @return the suffixed qualifier</em>
+<a class="jxr_linenumber" name="135" href="#135">135</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="136" href="#136">136</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> byte[] addShadowCellSuffixPrefix(byte[] qualifier) {
+<a class="jxr_linenumber" name="137" href="#137">137</a>         <strong class="jxr_keyword">return</strong> addShadowCellSuffixPrefix(qualifier, 0, qualifier.length);
+<a class="jxr_linenumber" name="138" href="#138">138</a>     }
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="141" href="#141">141</a> <em class="jxr_javadoccomment">     * Builds a new qualifier removing the shadow cell suffix from the</em>
+<a class="jxr_linenumber" name="142" href="#142">142</a> <em class="jxr_javadoccomment">     * passed HBase qualifier.</em>
+<a class="jxr_linenumber" name="143" href="#143">143</a> <em class="jxr_javadoccomment">     * @param qualifier the qualifier to remove the suffix from</em>
+<a class="jxr_linenumber" name="144" href="#144">144</a> <em class="jxr_javadoccomment">     * @param qualOffset the offset where the qualifier starts</em>
+<a class="jxr_linenumber" name="145" href="#145">145</a> <em class="jxr_javadoccomment">     * @param qualLength the qualifier length</em>
+<a class="jxr_linenumber" name="146" href="#146">146</a> <em class="jxr_javadoccomment">     * @return the new qualifier without the suffix</em>
+<a class="jxr_linenumber" name="147" href="#147">147</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="148" href="#148">148</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> byte[] removeShadowCellSuffixPrefix(byte[] qualifier, <strong class="jxr_keyword">int</strong> qualOffset, <strong class="jxr_keyword">int</strong> qualLength) {
+<a class="jxr_linenumber" name="149" href="#149">149</a>         <strong class="jxr_keyword">if</strong> (endsWith(qualifier, qualOffset, qualLength, SHADOW_CELL_SUFFIX)) {
+<a class="jxr_linenumber" name="150" href="#150">150</a>             <strong class="jxr_keyword">if</strong> (startsWith(qualifier, qualOffset,qualLength, SHADOW_CELL_PREFIX)) {
+<a class="jxr_linenumber" name="151" href="#151">151</a>                 <strong class="jxr_keyword">return</strong> Arrays.copyOfRange(qualifier,
+<a class="jxr_linenumber" name="152" href="#152">152</a>                         qualOffset + SHADOW_CELL_PREFIX.length,
+<a class="jxr_linenumber" name="153" href="#153">153</a>                         qualOffset + (qualLength - SHADOW_CELL_SUFFIX.length));
+<a class="jxr_linenumber" name="154" href="#154">154</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="155" href="#155">155</a>                 <em class="jxr_comment">//support backward competatbiliy</em>
+<a class="jxr_linenumber" name="156" href="#156">156</a>                 <strong class="jxr_keyword">return</strong> Arrays.copyOfRange(qualifier,
+<a class="jxr_linenumber" name="157" href="#157">157</a>                         qualOffset,qualOffset + (qualLength - SHADOW_CELL_SUFFIX.length));
+<a class="jxr_linenumber" name="158" href="#158">158</a>             }
 <a class="jxr_linenumber" name="159" href="#159">159</a> 
-<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">if</strong> (endsWith(qualifier, qualOffset, qualLength, SHADOW_CELL_SUFFIX)) {
-<a class="jxr_linenumber" name="161" href="#161">161</a>             <strong class="jxr_keyword">return</strong> qualLength - SHADOW_CELL_SUFFIX.length;
-<a class="jxr_linenumber" name="162" href="#162">162</a>         }
-<a class="jxr_linenumber" name="163" href="#163">163</a> 
-<a class="jxr_linenumber" name="164" href="#164">164</a>         <strong class="jxr_keyword">return</strong> qualLength;
-<a class="jxr_linenumber" name="165" href="#165">165</a> 
-<a class="jxr_linenumber" name="166" href="#166">166</a>     }
-<a class="jxr_linenumber" name="167" href="#167">167</a> 
-<a class="jxr_linenumber" name="168" href="#168">168</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="169" href="#169">169</a> <em class="jxr_javadoccomment">     * Complement to matchingQualifier() methods in HBase's CellUtil.class</em>
-<a class="jxr_linenumber" name="170" href="#170">170</a> <em class="jxr_javadoccomment">     * @param left the cell to compare the qualifier</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a> <em class="jxr_javadoccomment">     * @param qualArray the explicit qualifier array passed</em>
-<a class="jxr_linenumber" name="172" href="#172">172</a> <em class="jxr_javadoccomment">     * @param qualOffset the explicit qualifier offset passed</em>
-<a class="jxr_linenumber" name="173" href="#173">173</a> <em class="jxr_javadoccomment">     * @param qualLen the explicit qualifier length passed</em>
-<a class="jxr_linenumber" name="174" href="#174">174</a> <em class="jxr_javadoccomment">     * @return whether the qualifiers are equal or not</em>
-<a class="jxr_linenumber" name="175" href="#175">175</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> matchingQualifier(<strong class="jxr_keyword">final</strong> Cell left, <strong class="jxr_keyword">final</strong> byte[] qualArray, <strong class="jxr_keyword">int</strong> qualOffset, <strong class="jxr_keyword">int</strong> qualLen) {
-<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">return</strong> Bytes.equals(left.getQualifierArray(), left.getQualifierOffset(), left.getQualifierLength(),
-<a class="jxr_linenumber" name="178" href="#178">178</a>                 qualArray, qualOffset, qualLen);
-<a class="jxr_linenumber" name="179" href="#179">179</a>     }
-<a class="jxr_linenumber" name="180" href="#180">180</a> 
-<a class="jxr_linenumber" name="181" href="#181">181</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="182" href="#182">182</a> <em class="jxr_javadoccomment">     * Check that the cell passed meets the requirements for a valid cell identifier with Omid. Basically, users can't:</em>
-<a class="jxr_linenumber" name="183" href="#183">183</a> <em class="jxr_javadoccomment">     * 1) specify a timestamp</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_javadoccomment">     * 2) use a particular suffix in the qualifier</em>
-<a class="jxr_linenumber" name="185" href="#185">185</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> validateCell(Cell cell, <strong class="jxr_keyword">long</strong> startTimestamp) {
-<a class="jxr_linenumber" name="187" href="#187">187</a>         <em class="jxr_comment">// Throw exception if timestamp is set by the user</em>
-<a class="jxr_linenumber" name="188" href="#188">188</a>         <strong class="jxr_keyword">if</strong> (cell.getTimestamp() != HConstants.LATEST_TIMESTAMP
-<a class="jxr_linenumber" name="189" href="#189">189</a>                 &amp;&amp; cell.getTimestamp() != startTimestamp) {
-<a class="jxr_linenumber" name="190" href="#190">190</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
-<a class="jxr_linenumber" name="191" href="#191">191</a>                     <span class="jxr_string">"Timestamp not allowed in transactional user operations"</span>);
-<a class="jxr_linenumber" name="192" href="#192">192</a>         }
-<a class="jxr_linenumber" name="193" href="#193">193</a>         <em class="jxr_comment">// Throw exception if using a non-allowed qualifier</em>
-<a class="jxr_linenumber" name="194" href="#194">194</a>         <strong class="jxr_keyword">if</strong> (isShadowCell(cell)) {
-<a class="jxr_linenumber" name="195" href="#195">195</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
-<a class="jxr_linenumber" name="196" href="#196">196</a>                     <span class="jxr_string">"Reserved string used in column qualifier"</span>);
-<a class="jxr_linenumber" name="197" href="#197">197</a>         }
+<a class="jxr_linenumber" name="160" href="#160">160</a>         }
+<a class="jxr_linenumber" name="161" href="#161">161</a> 
+<a class="jxr_linenumber" name="162" href="#162">162</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
+<a class="jxr_linenumber" name="163" href="#163">163</a>                 <span class="jxr_string">"Can't find shadow cell suffix in qualifier "</span>
+<a class="jxr_linenumber" name="164" href="#164">164</a>                         + Bytes.toString(qualifier));
+<a class="jxr_linenumber" name="165" href="#165">165</a>     }
+<a class="jxr_linenumber" name="166" href="#166">166</a> 
+<a class="jxr_linenumber" name="167" href="#167">167</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a> <em class="jxr_javadoccomment">     * Returns the qualifier length removing the shadow cell suffix and prefix. In case that que suffix is not found,</em>
+<a class="jxr_linenumber" name="169" href="#169">169</a> <em class="jxr_javadoccomment">     * just returns the length of the qualifier passed.</em>
+<a class="jxr_linenumber" name="170" href="#170">170</a> <em class="jxr_javadoccomment">     * @param qualifier the qualifier to remove the suffix from</em>
+<a class="jxr_linenumber" name="171" href="#171">171</a> <em class="jxr_javadoccomment">     * @param qualOffset the offset where the qualifier starts</em>
+<a class="jxr_linenumber" name="172" href="#172">172</a> <em class="jxr_javadoccomment">     * @param qualLength the qualifier length</em>
+<a class="jxr_linenumber" name="173" href="#173">173</a> <em class="jxr_javadoccomment">     * @return the qualifier length without the suffix</em>
+<a class="jxr_linenumber" name="174" href="#174">174</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> qualifierLengthFromShadowCellQualifier(byte[] qualifier, <strong class="jxr_keyword">int</strong> qualOffset, <strong class="jxr_keyword">int</strong> qualLength) {
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">if</strong> (endsWith(qualifier, qualOffset, qualLength, SHADOW_CELL_SUFFIX)) {
+<a class="jxr_linenumber" name="178" href="#178">178</a>             <strong class="jxr_keyword">if</strong> (startsWith(qualifier,qualOffset, qualLength, SHADOW_CELL_PREFIX)) {
+<a class="jxr_linenumber" name="179" href="#179">179</a>                 <strong class="jxr_keyword">return</strong> qualLength - SHADOW_CELL_SUFFIX.length - SHADOW_CELL_PREFIX.length;
+<a class="jxr_linenumber" name="180" href="#180">180</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="181" href="#181">181</a>                 <strong class="jxr_keyword">return</strong> qualLength - SHADOW_CELL_SUFFIX.length;
+<a class="jxr_linenumber" name="182" href="#182">182</a>             }
+<a class="jxr_linenumber" name="183" href="#183">183</a>         }
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">return</strong> qualLength;
+<a class="jxr_linenumber" name="185" href="#185">185</a>     }
+<a class="jxr_linenumber" name="186" href="#186">186</a> 
+<a class="jxr_linenumber" name="187" href="#187">187</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="188" href="#188">188</a> <em class="jxr_javadoccomment">     * Complement to matchingQualifier() methods in HBase's CellUtil.class</em>
+<a class="jxr_linenumber" name="189" href="#189">189</a> <em class="jxr_javadoccomment">     * @param left the cell to compare the qualifier</em>
+<a class="jxr_linenumber" name="190" href="#190">190</a> <em class="jxr_javadoccomment">     * @param qualArray the explicit qualifier array passed</em>
+<a class="jxr_linenumber" name="191" href="#191">191</a> <em class="jxr_javadoccomment">     * @param qualOffset the explicit qualifier offset passed</em>
+<a class="jxr_linenumber" name="192" href="#192">192</a> <em class="jxr_javadoccomment">     * @param qualLen the explicit qualifier length passed</em>
+<a class="jxr_linenumber" name="193" href="#193">193</a> <em class="jxr_javadoccomment">     * @return whether the qualifiers are equal or not</em>
+<a class="jxr_linenumber" name="194" href="#194">194</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> matchingQualifier(<strong class="jxr_keyword">final</strong> Cell left, <strong class="jxr_keyword">final</strong> byte[] qualArray, <strong class="jxr_keyword">int</strong> qualOffset, <strong class="jxr_keyword">int</strong> qualLen) {
+<a class="jxr_linenumber" name="196" href="#196">196</a>         <strong class="jxr_keyword">return</strong> Bytes.equals(left.getQualifierArray(), left.getQualifierOffset(), left.getQualifierLength(),
+<a class="jxr_linenumber" name="197" href="#197">197</a>                 qualArray, qualOffset, qualLen);
 <a class="jxr_linenumber" name="198" href="#198">198</a>     }
 <a class="jxr_linenumber" name="199" href="#199">199</a> 
 <a class="jxr_linenumber" name="200" href="#200">200</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="201" href="#201">201</a> <em class="jxr_javadoccomment">     * Returns whether a cell contains a qualifier that is a shadow cell</em>
-<a class="jxr_linenumber" name="202" href="#202">202</a> <em class="jxr_javadoccomment">     * column qualifier or not.</em>
-<a class="jxr_linenumber" name="203" href="#203">203</a> <em class="jxr_javadoccomment">     * @param cell the cell to check if contains the shadow cell qualifier</em>
-<a class="jxr_linenumber" name="204" href="#204">204</a> <em class="jxr_javadoccomment">     * @return whether the cell passed contains a shadow cell qualifier or not</em>
-<a class="jxr_linenumber" name="205" href="#205">205</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="206" href="#206">206</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isShadowCell(Cell cell) {
-<a class="jxr_linenumber" name="207" href="#207">207</a>         byte[] qualifier = cell.getQualifierArray();
-<a class="jxr_linenumber" name="208" href="#208">208</a>         <strong class="jxr_keyword">int</strong> qualOffset = cell.getQualifierOffset();
-<a class="jxr_linenumber" name="209" href="#209">209</a>         <strong class="jxr_keyword">int</strong> qualLength = cell.getQualifierLength();
-<a class="jxr_linenumber" name="210" href="#210">210</a> 
-<a class="jxr_linenumber" name="211" href="#211">211</a>         <strong class="jxr_keyword">return</strong> endsWith(qualifier, qualOffset, qualLength, SHADOW_CELL_SUFFIX);
-<a class="jxr_linenumber" name="212" href="#212">212</a>     }
-<a class="jxr_linenumber" name="213" href="#213">213</a> 
-<a class="jxr_linenumber" name="214" href="#214">214</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> endsWith(byte[] value, <strong class="jxr_keyword">int</strong> offset, <strong class="jxr_keyword">int</strong> length, byte[] suffix) {
-<a class="jxr_linenumber" name="215" href="#215">215</a>         <strong class="jxr_keyword">if</strong> (length &lt;= suffix.length) {
-<a class="jxr_linenumber" name="216" href="#216">216</a>             <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="217" href="#217">217</a>         }
+<a class="jxr_linenumber" name="201" href="#201">201</a> <em class="jxr_javadoccomment">     * Check that the cell passed meets the requirements for a valid cell identifier with Omid. Basically, users can't:</em>
+<a class="jxr_linenumber" name="202" href="#202">202</a> <em class="jxr_javadoccomment">     * 1) specify a timestamp</em>
+<a class="jxr_linenumber" name="203" href="#203">203</a> <em class="jxr_javadoccomment">     * 2) use a particular suffix in the qualifier</em>
+<a class="jxr_linenumber" name="204" href="#204">204</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="205" href="#205">205</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> validateCell(Cell cell, <strong class="jxr_keyword">long</strong> startTimestamp) {
+<a class="jxr_linenumber" name="206" href="#206">206</a>         <em class="jxr_comment">// Throw exception if timestamp is set by the user</em>
+<a class="jxr_linenumber" name="207" href="#207">207</a>         <strong class="jxr_keyword">if</strong> (cell.getTimestamp() != HConstants.LATEST_TIMESTAMP
+<a class="jxr_linenumber" name="208" href="#208">208</a>                 &amp;&amp; cell.getTimestamp() != startTimestamp) {
+<a class="jxr_linenumber" name="209" href="#209">209</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
+<a class="jxr_linenumber" name="210" href="#210">210</a>                     <span class="jxr_string">"Timestamp not allowed in transactional user operations"</span>);
+<a class="jxr_linenumber" name="211" href="#211">211</a>         }
+<a class="jxr_linenumber" name="212" href="#212">212</a>         <em class="jxr_comment">// Throw exception if using a non-allowed qualifier</em>
+<a class="jxr_linenumber" name="213" href="#213">213</a>         <strong class="jxr_keyword">if</strong> (isShadowCell(cell)) {
+<a class="jxr_linenumber" name="214" href="#214">214</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
+<a class="jxr_linenumber" name="215" href="#215">215</a>                     <span class="jxr_string">"Reserved string used in column qualifier"</span>);
+<a class="jxr_linenumber" name="216" href="#216">216</a>         }
+<a class="jxr_linenumber" name="217" href="#217">217</a>     }
 <a class="jxr_linenumber" name="218" href="#218">218</a> 
-<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">int</strong> suffixOffset = offset + length - suffix.length;
-<a class="jxr_linenumber" name="220" href="#220">220</a>         <strong class="jxr_keyword">int</strong> result = Bytes.compareTo(value, suffixOffset, suffix.length,
-<a class="jxr_linenumber" name="221" href="#221">221</a>                 suffix, 0, suffix.length);
-<a class="jxr_linenumber" name="222" href="#222">222</a>         <strong class="jxr_keyword">return</strong> result == 0;
-<a class="jxr_linenumber" name="223" href="#223">223</a>     }
-<a class="jxr_linenumber" name="224" href="#224">224</a> 
-<a class="jxr_linenumber" name="225" href="#225">225</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="226" href="#226">226</a> <em class="jxr_javadoccomment">     * Returns if a cell is marked as a tombstone.</em>
-<a class="jxr_linenumber" name="227" href="#227">227</a> <em class="jxr_javadoccomment">     * @param cell the cell to check</em>
-<a class="jxr_linenumber" name="228" href="#228">228</a> <em class="jxr_javadoccomment">     * @return whether the cell is marked as a tombstone or not</em>
-<a class="jxr_linenumber" name="229" href="#229">229</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="230" href="#230">230</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isTombstone(Cell cell) {
-<a class="jxr_linenumber" name="231" href="#231">231</a>         <strong class="jxr_keyword">return</strong> CellUtil.matchingValue(cell, DELETE_TOMBSTONE);
-<a class="jxr_linenumber" name="232" href="#232">232</a>     }
-<a class="jxr_linenumber" name="233" href="#233">233</a> 
-<a class="jxr_linenumber" name="234" href="#234">234</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="235" href="#235">235</a> <em class="jxr_javadoccomment">     * Returns a new shadow cell created from a particular cell.</em>
-<a class="jxr_linenumber" name="236" href="#236">236</a> <em class="jxr_javadoccomment">     * @param cell</em>
-<a class="jxr_linenumber" name="237" href="#237">237</a> <em class="jxr_javadoccomment">     *            the cell to reconstruct the shadow cell from.</em>
-<a class="jxr_linenumber" name="238" href="#238">238</a> <em class="jxr_javadoccomment">     * @param shadowCellValue</em>
-<a class="jxr_linenumber" name="239" href="#239">239</a> <em class="jxr_javadoccomment">     *            the value for the new shadow cell created</em>
-<a class="jxr_linenumber" name="240" href="#240">240</a> <em class="jxr_javadoccomment">     * @return the brand-new shadow cell</em>
-<a class="jxr_linenumber" name="241" href="#241">241</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Cell buildShadowCellFromCell(Cell cell, byte[] shadowCellValue) {
-<a class="jxr_linenumber" name="243" href="#243">243</a>         byte[] shadowCellQualifier = addShadowCellSuffix(cell.getQualifierArray(),
-<a class="jxr_linenumber" name="244" href="#244">244</a>                 cell.getQualifierOffset(),
-<a class="jxr_linenumber" name="245" href="#245">245</a>                 cell.getQualifierLength());
-<a class="jxr_linenumber" name="246" href="#246">246</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> KeyValue(
-<a class="jxr_linenumber" name="247" href="#247">247</a>                 cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),
-<a class="jxr_linenumber" name="248" href="#248">248</a>                 cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),
-<a class="jxr_linenumber" name="249" href="#249">249</a>                 shadowCellQualifier, 0, shadowCellQualifier.length,
-<a class="jxr_linenumber" name="250" href="#250">250</a>                 cell.getTimestamp(), KeyValue.Type.codeToType(cell.getTypeByte()),
-<a class="jxr_linenumber" name="251" href="#251">251</a>                 shadowCellValue, 0, shadowCellValue.length);
-<a class="jxr_linenumber" name="252" href="#252">252</a>     }
-<a class="jxr_linenumber" name="253" href="#253">253</a> 
-<a class="jxr_linenumber" name="254" href="#254">254</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="255" href="#255">255</a> <em class="jxr_javadoccomment">     * Analyzes a list of cells, associating the corresponding shadow cell if present.</em>
-<a class="jxr_linenumber" name="256" href="#256">256</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="257" href="#257">257</a> <em class="jxr_javadoccomment">     * @param cells the list of cells to classify</em>
-<a class="jxr_linenumber" name="258" href="#258">258</a> <em class="jxr_javadoccomment">     * @return a sorted map associating each cell with its shadow cell</em>
-<a class="jxr_linenumber" name="259" href="#259">259</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> SortedMap&lt;Cell, Optional&lt;Cell&gt;&gt; mapCellsToShadowCells(List&lt;Cell&gt; cells) {
-<a class="jxr_linenumber" name="261" href="#261">261</a> 
-<a class="jxr_linenumber" name="262" href="#262">262</a>         SortedMap&lt;Cell, Optional&lt;Cell&gt;&gt; cellToShadowCellMap
-<a class="jxr_linenumber" name="263" href="#263">263</a>                 = <strong class="jxr_keyword">new</strong> TreeMap&lt;Cell, Optional&lt;Cell&gt;&gt;(<strong class="jxr_keyword">new</strong> CellComparator());
+<a class="jxr_linenumber" name="219" href="#219">219</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="220" href="#220">220</a> <em class="jxr_javadoccomment">     * Returns whether a cell contains a qualifier that is a delete cell</em>
+<a class="jxr_linenumber" name="221" href="#221">221</a> <em class="jxr_javadoccomment">     * column qualifier or not.</em>
+<a class="jxr_linenumber" name="222" href="#222">222</a> <em class="jxr_javadoccomment">     * @param cell the cell to check if contains the delete cell qualifier</em>
+<a class="jxr_linenumber" name="223" href="#223">223</a> <em class="jxr_javadoccomment">     * @return whether the cell passed contains a delete cell qualifier or not</em>
+<a class="jxr_linenumber" name="224" href="#224">224</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="225" href="#225">225</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyDeleteCell(Cell cell) {
+<a class="jxr_linenumber" name="226" href="#226">226</a>         <strong class="jxr_keyword">return</strong> CellUtil.matchingQualifier(cell, CellUtils.FAMILY_DELETE_QUALIFIER) &amp;&amp;
+<a class="jxr_linenumber" name="227" href="#227">227</a>                 CellUtil.matchingValue(cell, HConstants.EMPTY_BYTE_ARRAY);
+<a class="jxr_linenumber" name="228" href="#228">228</a>     }
+<a class="jxr_linenumber" name="229" href="#229">229</a> 
+<a class="jxr_linenumber" name="230" href="#230">230</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="231" href="#231">231</a> <em class="jxr_javadoccomment">     * Returns whether a cell contains a qualifier that is a shadow cell</em>
+<a class="jxr_linenumber" name="232" href="#232">232</a> <em class="jxr_javadoccomment">     * column qualifier or not.</em>
+<a class="jxr_linenumber" name="233" href="#233">233</a> <em class="jxr_javadoccomment">     * @param cell the cell to check if contains the shadow cell qualifier</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a> <em class="jxr_javadoccomment">     * @return whether the cell passed contains a shadow cell qualifier or not</em>
+<a class="jxr_linenumber" name="235" href="#235">235</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="236" href="#236">236</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isShadowCell(Cell cell) {
+<a class="jxr_linenumber" name="237" href="#237">237</a>         byte[] qualifier = cell.getQualifierArray();
+<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">int</strong> qualOffset = cell.getQualifierOffset();
+<a class="jxr_linenumber" name="239" href="#239">239</a>         <strong class="jxr_keyword">int</strong> qualLength = cell.getQualifierLength();
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>         <strong class="jxr_keyword">return</strong> endsWith(qualifier, qualOffset, qualLength, SHADOW_CELL_SUFFIX);
+<a class="jxr_linenumber" name="242" href="#242">242</a>     }
+<a class="jxr_linenumber" name="243" href="#243">243</a> 
+<a class="jxr_linenumber" name="244" href="#244">244</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> endsWith(byte[] value, <strong class="jxr_keyword">int</strong> offset, <strong class="jxr_keyword">int</strong> length, byte[] suffix) {
+<a class="jxr_linenumber" name="245" href="#245">245</a>         <strong class="jxr_keyword">if</strong> (length &lt;= suffix.length) {
+<a class="jxr_linenumber" name="246" href="#246">246</a>             <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="247" href="#247">247</a>         }
+<a class="jxr_linenumber" name="248" href="#248">248</a> 
+<a class="jxr_linenumber" name="249" href="#249">249</a>         <strong class="jxr_keyword">int</strong> suffixOffset = offset + length - suffix.length;
+<a class="jxr_linenumber" name="250" href="#250">250</a>         <strong class="jxr_keyword">int</strong> result = Bytes.compareTo(value, suffixOffset, suffix.length,
+<a class="jxr_linenumber" name="251" href="#251">251</a>                 suffix, 0, suffix.length);
+<a class="jxr_linenumber" name="252" href="#252">252</a>         <strong class="jxr_keyword">return</strong> result == 0;
+<a class="jxr_linenumber" name="253" href="#253">253</a>     }
+<a class="jxr_linenumber" name="254" href="#254">254</a> 
+<a class="jxr_linenumber" name="255" href="#255">255</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> startsWith(byte[] value, <strong class="jxr_keyword">int</strong> offset, <strong class="jxr_keyword">int</strong> length, byte[] prefix) {
+<a class="jxr_linenumber" name="256" href="#256">256</a>         <strong class="jxr_keyword">if</strong> (length &lt;= prefix.length) {
+<a class="jxr_linenumber" name="257" href="#257">257</a>             <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="258" href="#258">258</a>         }
+<a class="jxr_linenumber" name="259" href="#259">259</a> 
+<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">int</strong> result = Bytes.compareTo(value, offset, prefix.length,
+<a class="jxr_linenumber" name="261" href="#261">261</a>                 prefix, 0, prefix.length);
+<a class="jxr_linenumber" name="262" href="#262">262</a>         <strong class="jxr_keyword">return</strong> result == 0;
+<a class="jxr_linenumber" name="263" href="#263">263</a>     }
 <a class="jxr_linenumber" name="264" href="#264">264</a> 
-<a class="jxr_linenumber" name="265" href="#265">265</a>         Map&lt;CellId, Cell&gt; cellIdToCellMap = <strong class="jxr_keyword">new</strong> HashMap&lt;CellId, Cell&gt;();
-<a class="jxr_linenumber" name="266" href="#266">266</a>         <strong class="jxr_keyword">for</strong> (Cell cell : cells) {
-<a class="jxr_linenumber" name="267" href="#267">267</a>             <strong class="jxr_keyword">if</strong> (!isShadowCell(cell)) {
-<a class="jxr_linenumber" name="268" href="#268">268</a>                 <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a> key = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a>(cell, false);
-<a class="jxr_linenumber" name="269" href="#269">269</a>                 <strong class="jxr_keyword">if</strong> (cellIdToCellMap.containsKey(key)) {
-<a class="jxr_linenumber" name="270" href="#270">270</a>                     <em class="jxr_comment">// Get the current cell and compare the values</em>
-<a class="jxr_linenumber" name="271" href="#271">271</a>                     Cell storedCell = cellIdToCellMap.get(key);
-<a class="jxr_linenumber" name="272" href="#272">272</a>                     <strong class="jxr_keyword">if</strong> (CellUtil.matchingValue(cell, storedCell)) {
-<a class="jxr_linenumber" name="273" href="#273">273</a>                         <em class="jxr_comment">// TODO: Should we check also here the MVCC and swap if its greater???</em>
-<a class="jxr_linenumber" name="274" href="#274">274</a>                         <em class="jxr_comment">// Values are the same, ignore</em>
-<a class="jxr_linenumber" name="275" href="#275">275</a>                     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="276" href="#276">276</a>                         <strong class="jxr_keyword">if</strong> (cell.getMvccVersion() &gt; storedCell.getMvccVersion()) { <em class="jxr_comment">// Swap values</em>
-<a class="jxr_linenumber" name="277" href="#277">277</a>                             Optional&lt;Cell&gt; previousValue = cellToShadowCellMap.remove(storedCell);
-<a class="jxr_linenumber" name="278" href="#278">278</a>                             Preconditions.checkNotNull(previousValue, <span class="jxr_string">"Should contain an Optional&lt;Cell&gt; value"</span>);
-<a class="jxr_linenumber" name="279" href="#279">279</a>                             cellIdToCellMap.put(key, cell);
-<a class="jxr_linenumber" name="280" href="#280">280</a>                             cellToShadowCellMap.put(cell, previousValue);
-<a class="jxr_linenumber" name="281" href="#281">281</a>                         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="282" href="#282">282</a>                             LOG.warn(<span class="jxr_string">"Cell {} with an earlier MVCC found. Ignoring..."</span>, cell);
-<a class="jxr_linenumber" name="283" href="#283">283</a>                         }
-<a class="jxr_linenumber" name="284" href="#284">284</a>                     }
-<a class="jxr_linenumber" name="285" href="#285">285</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="286" href="#286">286</a>                     cellIdToCellMap.put(key, cell);
-<a class="jxr_linenumber" name="287" href="#287">287</a>                     cellToShadowCellMap.put(cell, Optional.&lt;Cell&gt;absent());
-<a class="jxr_linenumber" name="288" href="#288">288</a>                 }
-<a class="jxr_linenumber" name="289" href="#289">289</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="290" href="#290">290</a>                 <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a> key = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a>(cell, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="291" href="#291">291</a>                 <strong class="jxr_keyword">if</strong> (cellIdToCellMap.containsKey(key)) {
-<a class="jxr_linenumber" name="292" href="#292">292</a>                     Cell originalCell = cellIdToCellMap.get(key);
-<a class="jxr_linenumber" name="293" href="#293">293</a>                     cellToShadowCellMap.put(originalCell, Optional.of(cell));
-<a class="jxr_linenumber" name="294" href="#294">294</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="295" href="#295">295</a>                     LOG.trace(<span class="jxr_string">"Map does not contain key {}"</span>, key);
-<a class="jxr_linenumber" name="296" href="#296">296</a>                 }
-<a class="jxr_linenumber" name="297" href="#297">297</a>             }
-<a class="jxr_linenumber" name="298" href="#298">298</a>         }
-<a class="jxr_linenumber" name="299" href="#299">299</a> 
-<a class="jxr_linenumber" name="300" href="#300">300</a>         <strong class="jxr_keyword">return</strong> cellToShadowCellMap;
-<a class="jxr_linenumber" name="301" href="#301">301</a>     }
-<a class="jxr_linenumber" name="302" href="#302">302</a> 
-<a class="jxr_linenumber" name="303" href="#303">303</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a> {
-<a class="jxr_linenumber" name="304" href="#304">304</a> 
-<a class="jxr_linenumber" name="305" href="#305">305</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MIN_BITS = 32;
-<a class="jxr_linenumber" name="306" href="#306">306</a> 
-<a class="jxr_linenumber" name="307" href="#307">307</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Cell cell;
-<a class="jxr_linenumber" name="308" href="#308">308</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> isShadowCell;
-<a class="jxr_linenumber" name="309" href="#309">309</a> 
-<a class="jxr_linenumber" name="310" href="#310">310</a>         <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a>(Cell cell, <strong class="jxr_keyword">boolean</strong> isShadowCell) {
-<a class="jxr_linenumber" name="311" href="#311">311</a> 
-<a class="jxr_linenumber" name="312" href="#312">312</a>             <strong class="jxr_keyword">this</strong>.cell = cell;
-<a class="jxr_linenumber" name="313" href="#313">313</a>             <strong class="jxr_keyword">this</strong>.isShadowCell = isShadowCell;
-<a class="jxr_linenumber" name="314" href="#314">314</a> 
-<a class="jxr_linenumber" name="315" href="#315">315</a>         }
-<a class="jxr_linenumber" name="316" href="#316">316</a> 
-<a class="jxr_linenumber" name="317" href="#317">317</a>         Cell getCell() {
-<a class="jxr_linenumber" name="318" href="#318">318</a>             <strong class="jxr_keyword">return</strong> cell;
-<a class="jxr_linenumber" name="319" href="#319">319</a>         }
-<a class="jxr_linenumber" name="320" href="#320">320</a> 
-<a class="jxr_linenumber" name="321" href="#321">321</a>         <strong class="jxr_keyword">boolean</strong> isShadowCell() {
-<a class="jxr_linenumber" name="322" href="#322">322</a>             <strong class="jxr_keyword">return</strong> isShadowCell;
-<a class="jxr_linenumber" name="323" href="#323">323</a>         }
-<a class="jxr_linenumber" name="324" href="#324">324</a> 
-<a class="jxr_linenumber" name="325" href="#325">325</a>         @Override
-<a class="jxr_linenumber" name="326" href="#326">326</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> equals(Object o) {
-<a class="jxr_linenumber" name="327" href="#327">327</a>             <strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">this</strong>)
-<a class="jxr_linenumber" name="328" href="#328">328</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="329" href="#329">329</a>             <strong class="jxr_keyword">if</strong> (!(o instanceof CellId))
-<a class="jxr_linenumber" name="330" href="#330">330</a>                 <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="331" href="#331">331</a>             <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a> otherCellId = (CellId) o;
-<a class="jxr_linenumber" name="332" href="#332">332</a>             Cell otherCell = otherCellId.getCell();
-<a class="jxr_linenumber" name="333" href="#333">333</a> 
-<a class="jxr_linenumber" name="334" href="#334">334</a>             <em class="jxr_comment">// Row comparison</em>
-<a class="jxr_linenumber" name="335" href="#335">335</a>             <strong class="jxr_keyword">if</strong> (!CellUtil.matchingRow(otherCell, cell)) {
-<a class="jxr_linenumber" name="336" href="#336">336</a>                 <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="337" href="#337">337</a>             }
-<a class="jxr_linenumber" name="338" href="#338">338</a> 
-<a class="jxr_linenumber" name="339" href="#339">339</a>             <em class="jxr_comment">// Family comparison</em>
-<a class="jxr_linenumber" name="340" href="#340">340</a>             <strong class="jxr_keyword">if</strong> (!CellUtil.matchingFamily(otherCell, cell)) {
-<a class="jxr_linenumber" name="341" href="#341">341</a>                 <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="342" href="#342">342</a>             }
+<a class="jxr_linenumber" name="265" href="#265">265</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="266" href="#266">266</a> <em class="jxr_javadoccomment">     * Returns if a cell is marked as a tombstone.</em>
+<a class="jxr_linenumber" name="267" href="#267">267</a> <em class="jxr_javadoccomment">     * @param cell the cell to check</em>
+<a class="jxr_linenumber" name="268" href="#268">268</a> <em class="jxr_javadoccomment">     * @return whether the cell is marked as a tombstone or not</em>
+<a class="jxr_linenumber" name="269" href="#269">269</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="270" href="#270">270</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isTombstone(Cell cell) {
+<a class="jxr_linenumber" name="271" href="#271">271</a>         <strong class="jxr_keyword">return</strong> CellUtil.matchingValue(cell, DELETE_TOMBSTONE) ||
+<a class="jxr_linenumber" name="272" href="#272">272</a>                 CellUtil.matchingValue(cell, LEGACY_DELETE_TOMBSTONE);
+<a class="jxr_linenumber" name="273" href="#273">273</a>     }
+<a class="jxr_linenumber" name="274" href="#274">274</a> 
+<a class="jxr_linenumber" name="275" href="#275">275</a> 
+<a class="jxr_linenumber" name="276" href="#276">276</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="277" href="#277">277</a> <em class="jxr_javadoccomment">     * Returns a new shadow cell created from a particular cell.</em>
+<a class="jxr_linenumber" name="278" href="#278">278</a> <em class="jxr_javadoccomment">     * @param cell</em>
+<a class="jxr_linenumber" name="279" href="#279">279</a> <em class="jxr_javadoccomment">     *            the cell to reconstruct the shadow cell from.</em>
+<a class="jxr_linenumber" name="280" href="#280">280</a> <em class="jxr_javadoccomment">     * @param shadowCellValue</em>
+<a class="jxr_linenumber" name="281" href="#281">281</a> <em class="jxr_javadoccomment">     *            the value for the new shadow cell created</em>
+<a class="jxr_linenumber" name="282" href="#282">282</a> <em class="jxr_javadoccomment">     * @return the brand-new shadow cell</em>
+<a class="jxr_linenumber" name="283" href="#283">283</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="284" href="#284">284</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Cell buildShadowCellFromCell(Cell cell, byte[] shadowCellValue) {
+<a class="jxr_linenumber" name="285" href="#285">285</a>         byte[] shadowCellQualifier = addShadowCellSuffixPrefix(cell.getQualifierArray(),
+<a class="jxr_linenumber" name="286" href="#286">286</a>                 cell.getQualifierOffset(),
+<a class="jxr_linenumber" name="287" href="#287">287</a>                 cell.getQualifierLength());
+<a class="jxr_linenumber" name="288" href="#288">288</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> KeyValue(
+<a class="jxr_linenumber" name="289" href="#289">289</a>                 cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),
+<a class="jxr_linenumber" name="290" href="#290">290</a>                 cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),
+<a class="jxr_linenumber" name="291" href="#291">291</a>                 shadowCellQualifier, 0, shadowCellQualifier.length,
+<a class="jxr_linenumber" name="292" href="#292">292</a>                 cell.getTimestamp(), KeyValue.Type.codeToType(cell.getTypeByte()),
+<a class="jxr_linenumber" name="293" href="#293">293</a>                 shadowCellValue, 0, shadowCellValue.length);
+<a class="jxr_linenumber" name="294" href="#294">294</a>     }
+<a class="jxr_linenumber" name="295" href="#295">295</a> 
+<a class="jxr_linenumber" name="296" href="#296">296</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="297" href="#297">297</a> <em class="jxr_javadoccomment">     * Analyzes a list of cells, associating the corresponding shadow cell if present.</em>
+<a class="jxr_linenumber" name="298" href="#298">298</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="299" href="#299">299</a> <em class="jxr_javadoccomment">     * @param cells the list of cells to classify</em>
+<a class="jxr_linenumber" name="300" href="#300">300</a> <em class="jxr_javadoccomment">     * @return a sorted map associating each cell with its shadow cell</em>
+<a class="jxr_linenumber" name="301" href="#301">301</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="302" href="#302">302</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> SortedMap&lt;Cell, Optional&lt;Cell&gt;&gt; mapCellsToShadowCells(List&lt;Cell&gt; cells) {
+<a class="jxr_linenumber" name="303" href="#303">303</a> 
+<a class="jxr_linenumber" name="304" href="#304">304</a>         <em class="jxr_comment">// Move CellComparator to HBaseSims for 2.0 support</em>
+<a class="jxr_linenumber" name="305" href="#305">305</a>         <em class="jxr_comment">// Need to access through CellComparatorImpl.COMPARATOR</em>
+<a class="jxr_linenumber" name="306" href="#306">306</a>         SortedMap&lt;Cell, Optional&lt;Cell&gt;&gt; cellToShadowCellMap
+<a class="jxr_linenumber" name="307" href="#307">307</a>                 = <strong class="jxr_keyword">new</strong> TreeMap&lt;Cell, Optional&lt;Cell&gt;&gt;(HBaseShims.cellComparatorInstance());
+<a class="jxr_linenumber" name="308" href="#308">308</a> 
+<a class="jxr_linenumber" name="309" href="#309">309</a>         Map&lt;CellId, Cell&gt; cellIdToCellMap = <strong class="jxr_keyword">new</strong> HashMap&lt;CellId, Cell&gt;();
+<a class="jxr_linenumber" name="310" href="#310">310</a>         <strong class="jxr_keyword">for</strong> (Cell cell : cells) {
+<a class="jxr_linenumber" name="311" href="#311">311</a>             <strong class="jxr_keyword">if</strong> (!isShadowCell(cell)) {
+<a class="jxr_linenumber" name="312" href="#312">312</a>                 <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a> key = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a>(cell, false);
+<a class="jxr_linenumber" name="313" href="#313">313</a>                 <strong class="jxr_keyword">if</strong> (cellIdToCellMap.containsKey(key)) {
+<a class="jxr_linenumber" name="314" href="#314">314</a>                     <em class="jxr_comment">// Get the current cell and compare the values</em>
+<a class="jxr_linenumber" name="315" href="#315">315</a>                     Cell storedCell = cellIdToCellMap.get(key);
+<a class="jxr_linenumber" name="316" href="#316">316</a>                     <strong class="jxr_keyword">if</strong> (CellUtil.matchingValue(cell, storedCell)) {
+<a class="jxr_linenumber" name="317" href="#317">317</a>                         <em class="jxr_comment">// TODO: Should we check also here the MVCC and swap if its greater???</em>
+<a class="jxr_linenumber" name="318" href="#318">318</a>                         <em class="jxr_comment">// Values are the same, ignore</em>
+<a class="jxr_linenumber" name="319" href="#319">319</a>                     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="320" href="#320">320</a>                         <strong class="jxr_keyword">if</strong> (cell.getSequenceId() &gt; storedCell.getSequenceId()) { <em class="jxr_comment">// Swap values</em>
+<a class="jxr_linenumber" name="321" href="#321">321</a>                             Optional&lt;Cell&gt; previousValue = cellToShadowCellMap.remove(storedCell);
+<a class="jxr_linenumber" name="322" href="#322">322</a>                             Preconditions.checkNotNull(previousValue, <span class="jxr_string">"Should contain an Optional&lt;Cell&gt; value"</span>);
+<a class="jxr_linenumber" name="323" href="#323">323</a>                             cellIdToCellMap.put(key, cell);
+<a class="jxr_linenumber" name="324" href="#324">324</a>                             cellToShadowCellMap.put(cell, previousValue);
+<a class="jxr_linenumber" name="325" href="#325">325</a>                         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="326" href="#326">326</a>                             LOG.warn(<span class="jxr_string">"Cell {} with an earlier MVCC found. Ignoring..."</span>, cell);
+<a class="jxr_linenumber" name="327" href="#327">327</a>                         }
+<a class="jxr_linenumber" name="328" href="#328">328</a>                     }
+<a class="jxr_linenumber" name="329" href="#329">329</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="330" href="#330">330</a>                     cellIdToCellMap.put(key, cell);
+<a class="jxr_linenumber" name="331" href="#331">331</a>                     cellToShadowCellMap.put(cell, Optional.&lt;Cell&gt;absent());
+<a class="jxr_linenumber" name="332" href="#332">332</a>                 }
+<a class="jxr_linenumber" name="333" href="#333">333</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="334" href="#334">334</a>                 <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a> key = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a>(cell, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="335" href="#335">335</a>                 <strong class="jxr_keyword">if</strong> (cellIdToCellMap.containsKey(key)) {
+<a class="jxr_linenumber" name="336" href="#336">336</a>                     Cell originalCell = cellIdToCellMap.get(key);
+<a class="jxr_linenumber" name="337" href="#337">337</a>                     cellToShadowCellMap.put(originalCell, Optional.of(cell));
+<a class="jxr_linenumber" name="338" href="#338">338</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="339" href="#339">339</a>                     LOG.trace(<span class="jxr_string">"Map does not contain key {}"</span>, key);
+<a class="jxr_linenumber" name="340" href="#340">340</a>                 }
+<a class="jxr_linenumber" name="341" href="#341">341</a>             }
+<a class="jxr_linenumber" name="342" href="#342">342</a>         }
 <a class="jxr_linenumber" name="343" href="#343">343</a> 
-<a class="jxr_linenumber" name="344" href="#344">344</a>             <em class="jxr_comment">// Qualifier comparison</em>
-<a class="jxr_linenumber" name="345" href="#345">345</a>             <strong class="jxr_keyword">if</strong> (isShadowCell()) {
-<a class="jxr_linenumber" name="346" href="#346">346</a>                 <strong class="jxr_keyword">int</strong> qualifierLength = qualifierLengthFromShadowCellQualifier(cell.getQualifierArray(),
-<a class="jxr_linenumber" name="347" href="#347">347</a>                         cell.getQualifierOffset(),
-<a class="jxr_linenumber" name="348" href="#348">348</a>                         cell.getQualifierLength());
-<a class="jxr_linenumber" name="349" href="#349">349</a>                 <strong class="jxr_keyword">if</strong> (!matchingQualifier(otherCell,
-<a class="jxr_linenumber" name="350" href="#350">350</a>                         cell.getQualifierArray(), cell.getQualifierOffset(), qualifierLength)) {
-<a class="jxr_linenumber" name="351" href="#351">351</a>                     <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="352" href="#352">352</a>                 }
-<a class="jxr_linenumber" name="353" href="#353">353</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="354" href="#354">354</a>                 <strong class="jxr_keyword">if</strong> (!CellUtil.matchingQualifier(otherCell, cell)) {
-<a class="jxr_linenumber" name="355" href="#355">355</a>                     <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="356" href="#356">356</a>                 }
-<a class="jxr_linenumber" name="357" href="#357">357</a>             }
+<a class="jxr_linenumber" name="344" href="#344">344</a>         <strong class="jxr_keyword">return</strong> cellToShadowCellMap;
+<a class="jxr_linenumber" name="345" href="#345">345</a>     }
+<a class="jxr_linenumber" name="346" href="#346">346</a> 
+<a class="jxr_linenumber" name="347" href="#347">347</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a> {
+<a class="jxr_linenumber" name="348" href="#348">348</a> 
+<a class="jxr_linenumber" name="349" href="#349">349</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MIN_BITS = 32;
+<a class="jxr_linenumber" name="350" href="#350">350</a> 
+<a class="jxr_linenumber" name="351" href="#351">351</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Cell cell;
+<a class="jxr_linenumber" name="352" href="#352">352</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> isShadowCell;
+<a class="jxr_linenumber" name="353" href="#353">353</a> 
+<a class="jxr_linenumber" name="354" href="#354">354</a>         <a href="../../../../org/apache/omid/transaction/CellUtils.html">CellId</a>(Cell cell, <strong class="jxr_keyword">boolean</strong> isShadowCell) {
+<a class="jxr_linenumber" name="355" href="#355">355</a> 
+<a class="jxr_linenumber" name="356" href="#356">356</a>             <strong class="jxr_keyword">this</strong>.cell = cell;
+<a class="jxr_linenumber" name="357" href="#357">357</a>             <strong class="jxr_keyword">this</strong>.isShadowCell = isShadowCell;
 <a class="jxr_linenumber" name="358" href="#358">358</a> 
-<a class="jxr_linenumber" name="359" href="#359">359</a>             <em class="jxr_comment">// Timestamp comparison</em>
-<a class="jxr_linenumber" name="360" href="#360">360</a>             <strong class="jxr_keyword">return</strong> otherCell.getTimestamp() == cell.getTimestamp();
-<a class="jxr_linenumber" name="361" href="#361">361</a> 
-<a class="jxr_linenumber" name="362" href="#362">362</a>         }
-<a class="jxr_linenumber" name="363" href="#363">363</a> 
-<a class="jxr_linenumber" name="364" href="#364">364</a>         @Override
-<a class="jxr_linenumber" name="365" href="#365">365</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong

<TRUNCATED>


[17/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/examples/SnapshotIsolationExample.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/examples/SnapshotIsolationExample.html b/xref/org/apache/omid/examples/SnapshotIsolationExample.html
index 16f8237..c8372ac 100644
--- a/xref/org/apache/omid/examples/SnapshotIsolationExample.html
+++ b/xref/org/apache/omid/examples/SnapshotIsolationExample.html
@@ -27,203 +27,204 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.examples;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Preconditions;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.RollbackException;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TTable;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TransactionManager;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************************</em>
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * Example code which demonstrates the preservation of Snapshot Isolation when writing shared data concurrently</em>
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************************</em>
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * Please @see{BasicExample} first</em>
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * In the code below, two concurrent transactions (Tx1 and Tx2), try to update the same column in HBase. This will</em>
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * result in the rollback of Tx2 -the last one trying to commit- due to conflicts in the writeset with the previously</em>
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * committed transaction Tx1. Also shows how Tx2 reads the right values from its own snapshot in HBase data.</em>
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * After building the package with 'mvn clean package' find the resulting examples-{version}-bin.tar.gz file in the</em>
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * 'examples/target' folder. Copy it to the target host and expand with 'tar -zxvf examples-{version}-bin.tar.gz'.</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * Make sure that 'hbase-site.xml' and 'core-site.xml' are either in classpath (see run.sh) or explicitly referenced via</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * command line arguments. If a secure HBase deployment is needed, use also command line arguments to specify the</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * principal (user) and keytab file.</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * The example requires a user table to perform transactional read/write operations. A table is already specified in the</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * default configuration, and can be created with the following command using the 'hbase shell':</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * create 'MY_TX_TABLE', {NAME =&amp;gt; 'MY_CF', VERSIONS =&amp;gt; '2147483647', TTL =&amp;gt; '2147483647'}</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * Make sure that the principal/user has RW permissions for the given table using also the 'hbase shell':</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment"> * grant '{principal/user}', 'RW', 'MY_TX_TABLE'</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="70" href="#70">70</a>  <em class="jxr_javadoccomment"> * Alternatively, a table with a column family already created can be used by specifying the table name and column</em>
-<a class="jxr_linenumber" name="71" href="#71">71</a>  <em class="jxr_javadoccomment"> * family identifiers using the command line arguments (see details also in 'run.sh') If a table namespace is required,</em>
-<a class="jxr_linenumber" name="72" href="#72">72</a>  <em class="jxr_javadoccomment"> * specify it like this: 'namespace:table_name'</em>
-<a class="jxr_linenumber" name="73" href="#73">73</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="74" href="#74">74</a>  <em class="jxr_javadoccomment"> * Finally, run the example using the 'run.sh' script without arguments or specifying the necessary configuration</em>
-<a class="jxr_linenumber" name="75" href="#75">75</a>  <em class="jxr_javadoccomment"> * parameters if required.</em>
-<a class="jxr_linenumber" name="76" href="#76">76</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="77" href="#77">77</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">SnapshotIsolationExample</a> {
-<a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(SnapshotIsolationExample.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier;
-<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] initialData;
-<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] dataValue1;
-<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] dataValue2;
-<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/examples/RowIdGenerator.html">RowIdGenerator</a> rowIdGenerator = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">StaticRowIdGenerator</a>();
-<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> String userTableName;
-<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">private</strong> byte[] family;
-<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/TransactionManager.html">TransactionManager</a> tm;
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> txTable;
-<a class="jxr_linenumber" name="89" href="#89">89</a>  
-<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="91" href="#91">91</a>          <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">SnapshotIsolationExample</a> example = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">SnapshotIsolationExample</a>(args);
-<a class="jxr_linenumber" name="92" href="#92">92</a>          example.execute();
-<a class="jxr_linenumber" name="93" href="#93">93</a>          example.close();
-<a class="jxr_linenumber" name="94" href="#94">94</a>      }
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>      <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">SnapshotIsolationExample</a>(String[] args) <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="97" href="#97">97</a>          LOG.info(<span class="jxr_string">"Parsing the command line arguments"</span>);
-<a class="jxr_linenumber" name="98" href="#98">98</a>          userTableName = <span class="jxr_string">"MY_TX_TABLE"</span>;
-<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 0 &amp;&amp; StringUtils.isNotEmpty(args[0])) {
-<a class="jxr_linenumber" name="100" href="#100">100</a>             userTableName = args[0];
-<a class="jxr_linenumber" name="101" href="#101">101</a>         }
-<a class="jxr_linenumber" name="102" href="#102">102</a>         family = Bytes.toBytes(<span class="jxr_string">"MY_CF"</span>);
-<a class="jxr_linenumber" name="103" href="#103">103</a>         <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 1 &amp;&amp; StringUtils.isNotEmpty(args[1])) {
-<a class="jxr_linenumber" name="104" href="#104">104</a>             family = Bytes.toBytes(args[1]);
-<a class="jxr_linenumber" name="105" href="#105">105</a>         }
-<a class="jxr_linenumber" name="106" href="#106">106</a>         LOG.info(<span class="jxr_string">"Table '{}', column family '{}'"</span>, userTableName, Bytes.toString(family));
-<a class="jxr_linenumber" name="107" href="#107">107</a> 
-<a class="jxr_linenumber" name="108" href="#108">108</a>         qualifier = Bytes.toBytes(<span class="jxr_string">"MY_Q"</span>);
-<a class="jxr_linenumber" name="109" href="#109">109</a>         initialData = Bytes.toBytes(<span class="jxr_string">"initialVal"</span>);
-<a class="jxr_linenumber" name="110" href="#110">110</a>         dataValue1 = Bytes.toBytes(<span class="jxr_string">"val1"</span>);
-<a class="jxr_linenumber" name="111" href="#111">111</a>         dataValue2 = Bytes.toBytes(<span class="jxr_string">"val2"</span>);
-<a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a>         LOG.info(<span class="jxr_string">"--------"</span>);
-<a class="jxr_linenumber" name="114" href="#114">114</a>         LOG.info(<span class="jxr_string">"NOTE: All Transactions in the Example access column {}:{}/{}/{} [TABLE:ROW/CF/Q]"</span>,
-<a class="jxr_linenumber" name="115" href="#115">115</a>                  userTableName, Bytes.toString(rowIdGenerator.getRowId()), Bytes.toString(family),
-<a class="jxr_linenumber" name="116" href="#116">116</a>                  Bytes.toString(qualifier));
-<a class="jxr_linenumber" name="117" href="#117">117</a>         LOG.info(<span class="jxr_string">"--------"</span>);
-<a class="jxr_linenumber" name="118" href="#118">118</a> 
-<a class="jxr_linenumber" name="119" href="#119">119</a>         LOG.info(<span class="jxr_string">"Creating access to Omid Transaction Manager &amp; Transactional Table '{}'"</span>, userTableName);
-<a class="jxr_linenumber" name="120" href="#120">120</a>         tm = HBaseTransactionManager.newInstance();
-<a class="jxr_linenumber" name="121" href="#121">121</a>         txTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(userTableName);
-<a class="jxr_linenumber" name="122" href="#122">122</a>     }
-<a class="jxr_linenumber" name="123" href="#123">123</a> 
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">void</strong> execute() <strong class="jxr_keyword">throws</strong> IOException, RollbackException {
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>         <em class="jxr_comment">// A transaction Tx0 sets an initial value to a particular column in an specific row</em>
-<a class="jxr_linenumber" name="127" href="#127">127</a>         <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx0 = tm.begin();
-<a class="jxr_linenumber" name="128" href="#128">128</a>         byte[] rowId = rowIdGenerator.getRowId();
-<a class="jxr_linenumber" name="129" href="#129">129</a>         Put initialPut = <strong class="jxr_keyword">new</strong> Put(rowId);
-<a class="jxr_linenumber" name="130" href="#130">130</a>         initialPut.add(family, qualifier, initialData);
-<a class="jxr_linenumber" name="131" href="#131">131</a>         txTable.put(tx0, initialPut);
-<a class="jxr_linenumber" name="132" href="#132">132</a>         tm.commit(tx0);
-<a class="jxr_linenumber" name="133" href="#133">133</a>         LOG.info(<span class="jxr_string">"Initial Transaction {} COMMITTED. Base value written in {}:{}/{}/{} = {}"</span>,
-<a class="jxr_linenumber" name="134" href="#134">134</a>                  tx0, userTableName, Bytes.toString(rowId), Bytes.toString(family),
-<a class="jxr_linenumber" name="135" href="#135">135</a>                  Bytes.toString(qualifier), Bytes.toString(initialData));
-<a class="jxr_linenumber" name="136" href="#136">136</a> 
-<a class="jxr_linenumber" name="137" href="#137">137</a>         <em class="jxr_comment">// Transaction Tx1 starts, creates its own snapshot of the current data in HBase and writes new data</em>
-<a class="jxr_linenumber" name="138" href="#138">138</a>         <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx1 = tm.begin();
-<a class="jxr_linenumber" name="139" href="#139">139</a>         LOG.info(<span class="jxr_string">"Transaction {} STARTED"</span>, tx1);
-<a class="jxr_linenumber" name="140" href="#140">140</a>         Put tx1Put = <strong class="jxr_keyword">new</strong> Put(rowId);
-<a class="jxr_linenumber" name="141" href="#141">141</a>         tx1Put.add(family, qualifier, dataValue1);
-<a class="jxr_linenumber" name="142" href="#142">142</a>         txTable.put(tx1, tx1Put);
-<a class="jxr_linenumber" name="143" href="#143">143</a>         LOG.info(<span class="jxr_string">"Transaction {} updates base value in {}:{}/{}/{} = {} in its own Snapshot"</span>,
-<a class="jxr_linenumber" name="144" href="#144">144</a>                  tx1, userTableName, Bytes.toString(rowId), Bytes.toString(family),
-<a class="jxr_linenumber" name="145" href="#145">145</a>                  Bytes.toString(qualifier), Bytes.toString(dataValue1));
-<a class="jxr_linenumber" name="146" href="#146">146</a> 
-<a class="jxr_linenumber" name="147" href="#147">147</a>         <em class="jxr_comment">// A concurrent transaction Tx2 starts, creates its own snapshot and reads the column value</em>
-<a class="jxr_linenumber" name="148" href="#148">148</a>         <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx2 = tm.begin();
-<a class="jxr_linenumber" name="149" href="#149">149</a>         LOG.info(<span class="jxr_string">"Concurrent Transaction {} STARTED"</span>, tx2);
-<a class="jxr_linenumber" name="150" href="#150">150</a>         Get tx2Get = <strong class="jxr_keyword">new</strong> Get(rowId);
-<a class="jxr_linenumber" name="151" href="#151">151</a>         tx2Get.addColumn(family, qualifier);
-<a class="jxr_linenumber" name="152" href="#152">152</a>         Result tx2GetResult = txTable.get(tx2, tx2Get);
-<a class="jxr_linenumber" name="153" href="#153">153</a>         Preconditions.checkState(Arrays.equals(tx2GetResult.value(), initialData),
-<a class="jxr_linenumber" name="154" href="#154">154</a>                                  <span class="jxr_string">"As Tx1 is not yet committed, Tx2 should read the value set by Tx0 not the value written by Tx1"</span>);
-<a class="jxr_linenumber" name="155" href="#155">155</a>         LOG.info(
-<a class="jxr_linenumber" name="156" href="#156">156</a>             <span class="jxr_string">"Concurrent Transaction {} should read base value in {}:{}/{}/{} from its Snapshot | Value read = {}"</span>,
-<a class="jxr_linenumber" name="157" href="#157">157</a>             tx2, userTableName, Bytes.toString(rowId), Bytes.toString(family),
-<a class="jxr_linenumber" name="158" href="#158">158</a>             Bytes.toString(qualifier), Bytes.toString(tx2GetResult.value()));
-<a class="jxr_linenumber" name="159" href="#159">159</a> 
-<a class="jxr_linenumber" name="160" href="#160">160</a>         <em class="jxr_comment">// Transaction Tx1 tries to commit and as there're no conflicting changes, persists the new value in HBase</em>
-<a class="jxr_linenumber" name="161" href="#161">161</a>         tm.commit(tx1);
-<a class="jxr_linenumber" name="162" href="#162">162</a>         LOG.info(<span class="jxr_string">"Transaction {} COMMITTED. New column value {}:{}/{}/{} = {}"</span>,
-<a class="jxr_linenumber" name="163" href="#163">163</a>                  tx1, userTableName, Bytes.toString(rowId), Bytes.toString(family),
-<a class="jxr_linenumber" name="164" href="#164">164</a>                  Bytes.toString(qualifier), Bytes.toString(dataValue1));
-<a class="jxr_linenumber" name="165" href="#165">165</a> 
-<a class="jxr_linenumber" name="166" href="#166">166</a>         <em class="jxr_comment">// Tx2 reading again after Tx1 commit must read data from its snapshot...</em>
-<a class="jxr_linenumber" name="167" href="#167">167</a>         tx2Get = <strong class="jxr_keyword">new</strong> Get(rowId);
-<a class="jxr_linenumber" name="168" href="#168">168</a>         tx2Get.addColumn(family, qualifier);
-<a class="jxr_linenumber" name="169" href="#169">169</a>         tx2GetResult = txTable.get(tx2, tx2Get);
-<a class="jxr_linenumber" name="170" href="#170">170</a>         <em class="jxr_comment">// ...so it must read the initial value written by Tx0</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a>         LOG.info(
-<a class="jxr_linenumber" name="172" href="#172">172</a>             <span class="jxr_string">"Concurrent Transaction {} should read again base value in {}:{}/{}/{} from its Snapshot | Value read = {}"</span>,
-<a class="jxr_linenumber" name="173" href="#173">173</a>             tx2, userTableName, Bytes.toString(rowId), Bytes.toString(family),
-<a class="jxr_linenumber" name="174" href="#174">174</a>             Bytes.toString(qualifier), Bytes.toString(tx2GetResult.value()));
-<a class="jxr_linenumber" name="175" href="#175">175</a>         Preconditions.checkState(Arrays.equals(tx2GetResult.value(), initialData),
-<a class="jxr_linenumber" name="176" href="#176">176</a>                                  <span class="jxr_string">"Tx2 must read the initial value written by Tx0"</span>);
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>         <em class="jxr_comment">// Tx2 tries to write the column written by the committed concurrent transaction Tx1...</em>
-<a class="jxr_linenumber" name="179" href="#179">179</a>         Put tx2Put = <strong class="jxr_keyword">new</strong> Put(rowId);
-<a class="jxr_linenumber" name="180" href="#180">180</a>         tx2Put.add(family, qualifier, dataValue2);
-<a class="jxr_linenumber" name="181" href="#181">181</a>         txTable.put(tx2, tx2Put);
-<a class="jxr_linenumber" name="182" href="#182">182</a>         LOG.info(
-<a class="jxr_linenumber" name="183" href="#183">183</a>             <span class="jxr_string">"Concurrent Transaction {} updates {}:{}/{}/{} = {} in its own Snapshot (Will conflict with {} at commit time)"</span>,
-<a class="jxr_linenumber" name="184" href="#184">184</a>             tx2, userTableName, Bytes.toString(rowId), Bytes.toString(family),
-<a class="jxr_linenumber" name="185" href="#185">185</a>             Bytes.toString(qualifier), Bytes.toString(dataValue1), tx1);
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>         <em class="jxr_comment">// ... and when committing, Tx2 has to abort due to concurrent conflicts with committed transaction Tx1</em>
-<a class="jxr_linenumber" name="188" href="#188">188</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="189" href="#189">189</a>             LOG.info(<span class="jxr_string">"Concurrent Transaction {} TRYING TO COMMIT"</span>, tx2);
-<a class="jxr_linenumber" name="190" href="#190">190</a>             tm.commit(tx2);
-<a class="jxr_linenumber" name="191" href="#191">191</a>             <em class="jxr_comment">// should throw an exception</em>
-<a class="jxr_linenumber" name="192" href="#192">192</a>             Preconditions.checkState(false, <span class="jxr_string">"Should have thrown RollbackException"</span>);
-<a class="jxr_linenumber" name="193" href="#193">193</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
-<a class="jxr_linenumber" name="194" href="#194">194</a>             LOG.info(<span class="jxr_string">"Concurrent Transaction {} ROLLED-BACK : {}"</span>, tx2, e.getMessage());
-<a class="jxr_linenumber" name="195" href="#195">195</a>         }
-<a class="jxr_linenumber" name="196" href="#196">196</a>     }
-<a class="jxr_linenumber" name="197" href="#197">197</a> 
-<a class="jxr_linenumber" name="198" href="#198">198</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="199" href="#199">199</a>         tm.close();
-<a class="jxr_linenumber" name="200" href="#200">200</a>         txTable.close();
-<a class="jxr_linenumber" name="201" href="#201">201</a>     }
-<a class="jxr_linenumber" name="202" href="#202">202</a> 
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.RollbackException;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TTable;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TransactionManager;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Preconditions;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************************</em>
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * Example code which demonstrates the preservation of Snapshot Isolation when writing shared data concurrently</em>
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************************</em>
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * Please @see{BasicExample} first</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * In the code below, two concurrent transactions (Tx1 and Tx2), try to update the same column in HBase. This will</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * result in the rollback of Tx2 -the last one trying to commit- due to conflicts in the writeset with the previously</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * committed transaction Tx1. Also shows how Tx2 reads the right values from its own snapshot in HBase data.</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * After building the package with 'mvn clean package' find the resulting examples-{version}-bin.tar.gz file in the</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * 'examples/target' folder. Copy it to the target host and expand with 'tar -zxvf examples-{version}-bin.tar.gz'.</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * Make sure that 'hbase-site.xml' and 'core-site.xml' are either in classpath (see run.sh) or explicitly referenced via</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * command line arguments. If a secure HBase deployment is needed, use also command line arguments to specify the</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * principal (user) and keytab file.</em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * The example requires a user table to perform transactional read/write operations. A table is already specified in the</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * default configuration, and can be created with the following command using the 'hbase shell':</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> * create 'MY_TX_TABLE', {NAME =&amp;gt; 'MY_CF', VERSIONS =&amp;gt; '2147483647', TTL =&amp;gt; '2147483647'}</em>
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> * Make sure that the principal/user has RW permissions for the given table using also the 'hbase shell':</em>
+<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
+<a class="jxr_linenumber" name="68" href="#68">68</a>  <em class="jxr_javadoccomment"> * grant '{principal/user}', 'RW', 'MY_TX_TABLE'</em>
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>  <em class="jxr_javadoccomment"> * Alternatively, a table with a column family already created can be used by specifying the table name and column</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>  <em class="jxr_javadoccomment"> * family identifiers using the command line arguments (see details also in 'run.sh') If a table namespace is required,</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>  <em class="jxr_javadoccomment"> * specify it like this: 'namespace:table_name'</em>
+<a class="jxr_linenumber" name="74" href="#74">74</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>  <em class="jxr_javadoccomment"> * Finally, run the example using the 'run.sh' script without arguments or specifying the necessary configuration</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>  <em class="jxr_javadoccomment"> * parameters if required.</em>
+<a class="jxr_linenumber" name="77" href="#77">77</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">SnapshotIsolationExample</a> {
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(SnapshotIsolationExample.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier;
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] initialData;
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] dataValue1;
+<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] dataValue2;
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/examples/RowIdGenerator.html">RowIdGenerator</a> rowIdGenerator = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">StaticRowIdGenerator</a>();
+<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">private</strong> String userTableName;
+<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">private</strong> byte[] family;
+<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/TransactionManager.html">TransactionManager</a> tm;
+<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> txTable;
+<a class="jxr_linenumber" name="90" href="#90">90</a>  
+<a class="jxr_linenumber" name="91" href="#91">91</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="92" href="#92">92</a>          <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">SnapshotIsolationExample</a> example = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">SnapshotIsolationExample</a>(args);
+<a class="jxr_linenumber" name="93" href="#93">93</a>          example.execute();
+<a class="jxr_linenumber" name="94" href="#94">94</a>          example.close();
+<a class="jxr_linenumber" name="95" href="#95">95</a>      }
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>      <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">SnapshotIsolationExample</a>(String[] args) <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="98" href="#98">98</a>          LOG.info(<span class="jxr_string">"Parsing the command line arguments"</span>);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          userTableName = <span class="jxr_string">"MY_TX_TABLE"</span>;
+<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 0 &amp;&amp; StringUtils.isNotEmpty(args[0])) {
+<a class="jxr_linenumber" name="101" href="#101">101</a>             userTableName = args[0];
+<a class="jxr_linenumber" name="102" href="#102">102</a>         }
+<a class="jxr_linenumber" name="103" href="#103">103</a>         family = Bytes.toBytes(<span class="jxr_string">"MY_CF"</span>);
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 1 &amp;&amp; StringUtils.isNotEmpty(args[1])) {
+<a class="jxr_linenumber" name="105" href="#105">105</a>             family = Bytes.toBytes(args[1]);
+<a class="jxr_linenumber" name="106" href="#106">106</a>         }
+<a class="jxr_linenumber" name="107" href="#107">107</a>         LOG.info(<span class="jxr_string">"Table '{}', column family '{}'"</span>, userTableName, Bytes.toString(family));
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>         qualifier = Bytes.toBytes(<span class="jxr_string">"MY_Q"</span>);
+<a class="jxr_linenumber" name="110" href="#110">110</a>         initialData = Bytes.toBytes(<span class="jxr_string">"initialVal"</span>);
+<a class="jxr_linenumber" name="111" href="#111">111</a>         dataValue1 = Bytes.toBytes(<span class="jxr_string">"val1"</span>);
+<a class="jxr_linenumber" name="112" href="#112">112</a>         dataValue2 = Bytes.toBytes(<span class="jxr_string">"val2"</span>);
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>         LOG.info(<span class="jxr_string">"--------"</span>);
+<a class="jxr_linenumber" name="115" href="#115">115</a>         LOG.info(<span class="jxr_string">"NOTE: All Transactions in the Example access column {}:{}/{}/{} [TABLE:ROW/CF/Q]"</span>,
+<a class="jxr_linenumber" name="116" href="#116">116</a>                  userTableName, Bytes.toString(rowIdGenerator.getRowId()), Bytes.toString(family),
+<a class="jxr_linenumber" name="117" href="#117">117</a>                  Bytes.toString(qualifier));
+<a class="jxr_linenumber" name="118" href="#118">118</a>         LOG.info(<span class="jxr_string">"--------"</span>);
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>         LOG.info(<span class="jxr_string">"Creating access to Omid Transaction Manager &amp; Transactional Table '{}'"</span>, userTableName);
+<a class="jxr_linenumber" name="121" href="#121">121</a>         tm = HBaseTransactionManager.newInstance();
+<a class="jxr_linenumber" name="122" href="#122">122</a>         txTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(ConnectionFactory.createConnection(), userTableName);
+<a class="jxr_linenumber" name="123" href="#123">123</a>     }
+<a class="jxr_linenumber" name="124" href="#124">124</a> 
+<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">void</strong> execute() <strong class="jxr_keyword">throws</strong> IOException, RollbackException {
+<a class="jxr_linenumber" name="126" href="#126">126</a> 
+<a class="jxr_linenumber" name="127" href="#127">127</a>         <em class="jxr_comment">// A transaction Tx0 sets an initial value to a particular column in an specific row</em>
+<a class="jxr_linenumber" name="128" href="#128">128</a>         <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx0 = tm.begin();
+<a class="jxr_linenumber" name="129" href="#129">129</a>         byte[] rowId = rowIdGenerator.getRowId();
+<a class="jxr_linenumber" name="130" href="#130">130</a>         Put initialPut = <strong class="jxr_keyword">new</strong> Put(rowId);
+<a class="jxr_linenumber" name="131" href="#131">131</a>         initialPut.addColumn(family, qualifier, initialData);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         txTable.put(tx0, initialPut);
+<a class="jxr_linenumber" name="133" href="#133">133</a>         tm.commit(tx0);
+<a class="jxr_linenumber" name="134" href="#134">134</a>         LOG.info(<span class="jxr_string">"Initial Transaction {} COMMITTED. Base value written in {}:{}/{}/{} = {}"</span>,
+<a class="jxr_linenumber" name="135" href="#135">135</a>                  tx0, userTableName, Bytes.toString(rowId), Bytes.toString(family),
+<a class="jxr_linenumber" name="136" href="#136">136</a>                  Bytes.toString(qualifier), Bytes.toString(initialData));
+<a class="jxr_linenumber" name="137" href="#137">137</a> 
+<a class="jxr_linenumber" name="138" href="#138">138</a>         <em class="jxr_comment">// Transaction Tx1 starts, creates its own snapshot of the current data in HBase and writes new data</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a>         <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx1 = tm.begin();
+<a class="jxr_linenumber" name="140" href="#140">140</a>         LOG.info(<span class="jxr_string">"Transaction {} STARTED"</span>, tx1);
+<a class="jxr_linenumber" name="141" href="#141">141</a>         Put tx1Put = <strong class="jxr_keyword">new</strong> Put(rowId);
+<a class="jxr_linenumber" name="142" href="#142">142</a>         tx1Put.addColumn(family, qualifier, dataValue1);
+<a class="jxr_linenumber" name="143" href="#143">143</a>         txTable.put(tx1, tx1Put);
+<a class="jxr_linenumber" name="144" href="#144">144</a>         LOG.info(<span class="jxr_string">"Transaction {} updates base value in {}:{}/{}/{} = {} in its own Snapshot"</span>,
+<a class="jxr_linenumber" name="145" href="#145">145</a>                  tx1, userTableName, Bytes.toString(rowId), Bytes.toString(family),
+<a class="jxr_linenumber" name="146" href="#146">146</a>                  Bytes.toString(qualifier), Bytes.toString(dataValue1));
+<a class="jxr_linenumber" name="147" href="#147">147</a> 
+<a class="jxr_linenumber" name="148" href="#148">148</a>         <em class="jxr_comment">// A concurrent transaction Tx2 starts, creates its own snapshot and reads the column value</em>
+<a class="jxr_linenumber" name="149" href="#149">149</a>         <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx2 = tm.begin();
+<a class="jxr_linenumber" name="150" href="#150">150</a>         LOG.info(<span class="jxr_string">"Concurrent Transaction {} STARTED"</span>, tx2);
+<a class="jxr_linenumber" name="151" href="#151">151</a>         Get tx2Get = <strong class="jxr_keyword">new</strong> Get(rowId);
+<a class="jxr_linenumber" name="152" href="#152">152</a>         tx2Get.addColumn(family, qualifier);
+<a class="jxr_linenumber" name="153" href="#153">153</a>         Result tx2GetResult = txTable.get(tx2, tx2Get);
+<a class="jxr_linenumber" name="154" href="#154">154</a>         Preconditions.checkState(Arrays.equals(tx2GetResult.value(), initialData),
+<a class="jxr_linenumber" name="155" href="#155">155</a>                                  <span class="jxr_string">"As Tx1 is not yet committed, Tx2 should read the value set by Tx0 not the value written by Tx1"</span>);
+<a class="jxr_linenumber" name="156" href="#156">156</a>         LOG.info(
+<a class="jxr_linenumber" name="157" href="#157">157</a>             <span class="jxr_string">"Concurrent Transaction {} should read base value in {}:{}/{}/{} from its Snapshot | Value read = {}"</span>,
+<a class="jxr_linenumber" name="158" href="#158">158</a>             tx2, userTableName, Bytes.toString(rowId), Bytes.toString(family),
+<a class="jxr_linenumber" name="159" href="#159">159</a>             Bytes.toString(qualifier), Bytes.toString(tx2GetResult.value()));
+<a class="jxr_linenumber" name="160" href="#160">160</a> 
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <em class="jxr_comment">// Transaction Tx1 tries to commit and as there're no conflicting changes, persists the new value in HBase</em>
+<a class="jxr_linenumber" name="162" href="#162">162</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="163" href="#163">163</a>         LOG.info(<span class="jxr_string">"Transaction {} COMMITTED. New column value {}:{}/{}/{} = {}"</span>,
+<a class="jxr_linenumber" name="164" href="#164">164</a>                  tx1, userTableName, Bytes.toString(rowId), Bytes.toString(family),
+<a class="jxr_linenumber" name="165" href="#165">165</a>                  Bytes.toString(qualifier), Bytes.toString(dataValue1));
+<a class="jxr_linenumber" name="166" href="#166">166</a> 
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <em class="jxr_comment">// Tx2 reading again after Tx1 commit must read data from its snapshot...</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a>         tx2Get = <strong class="jxr_keyword">new</strong> Get(rowId);
+<a class="jxr_linenumber" name="169" href="#169">169</a>         tx2Get.addColumn(family, qualifier);
+<a class="jxr_linenumber" name="170" href="#170">170</a>         tx2GetResult = txTable.get(tx2, tx2Get);
+<a class="jxr_linenumber" name="171" href="#171">171</a>         <em class="jxr_comment">// ...so it must read the initial value written by Tx0</em>
+<a class="jxr_linenumber" name="172" href="#172">172</a>         LOG.info(
+<a class="jxr_linenumber" name="173" href="#173">173</a>             <span class="jxr_string">"Concurrent Transaction {} should read again base value in {}:{}/{}/{} from its Snapshot | Value read = {}"</span>,
+<a class="jxr_linenumber" name="174" href="#174">174</a>             tx2, userTableName, Bytes.toString(rowId), Bytes.toString(family),
+<a class="jxr_linenumber" name="175" href="#175">175</a>             Bytes.toString(qualifier), Bytes.toString(tx2GetResult.value()));
+<a class="jxr_linenumber" name="176" href="#176">176</a>         Preconditions.checkState(Arrays.equals(tx2GetResult.value(), initialData),
+<a class="jxr_linenumber" name="177" href="#177">177</a>                                  <span class="jxr_string">"Tx2 must read the initial value written by Tx0"</span>);
+<a class="jxr_linenumber" name="178" href="#178">178</a> 
+<a class="jxr_linenumber" name="179" href="#179">179</a>         <em class="jxr_comment">// Tx2 tries to write the column written by the committed concurrent transaction Tx1...</em>
+<a class="jxr_linenumber" name="180" href="#180">180</a>         Put tx2Put = <strong class="jxr_keyword">new</strong> Put(rowId);
+<a class="jxr_linenumber" name="181" href="#181">181</a>         tx2Put.addColumn(family, qualifier, dataValue2);
+<a class="jxr_linenumber" name="182" href="#182">182</a>         txTable.put(tx2, tx2Put);
+<a class="jxr_linenumber" name="183" href="#183">183</a>         LOG.info(
+<a class="jxr_linenumber" name="184" href="#184">184</a>             <span class="jxr_string">"Concurrent Transaction {} updates {}:{}/{}/{} = {} in its own Snapshot (Will conflict with {} at commit time)"</span>,
+<a class="jxr_linenumber" name="185" href="#185">185</a>             tx2, userTableName, Bytes.toString(rowId), Bytes.toString(family),
+<a class="jxr_linenumber" name="186" href="#186">186</a>             Bytes.toString(qualifier), Bytes.toString(dataValue1), tx1);
+<a class="jxr_linenumber" name="187" href="#187">187</a> 
+<a class="jxr_linenumber" name="188" href="#188">188</a>         <em class="jxr_comment">// ... and when committing, Tx2 has to abort due to concurrent conflicts with committed transaction Tx1</em>
+<a class="jxr_linenumber" name="189" href="#189">189</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="190" href="#190">190</a>             LOG.info(<span class="jxr_string">"Concurrent Transaction {} TRYING TO COMMIT"</span>, tx2);
+<a class="jxr_linenumber" name="191" href="#191">191</a>             tm.commit(tx2);
+<a class="jxr_linenumber" name="192" href="#192">192</a>             <em class="jxr_comment">// should throw an exception</em>
+<a class="jxr_linenumber" name="193" href="#193">193</a>             Preconditions.checkState(false, <span class="jxr_string">"Should have thrown RollbackException"</span>);
+<a class="jxr_linenumber" name="194" href="#194">194</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="195" href="#195">195</a>             LOG.info(<span class="jxr_string">"Concurrent Transaction {} ROLLED-BACK : {}"</span>, tx2, e.getMessage());
+<a class="jxr_linenumber" name="196" href="#196">196</a>         }
+<a class="jxr_linenumber" name="197" href="#197">197</a>     }
+<a class="jxr_linenumber" name="198" href="#198">198</a> 
+<a class="jxr_linenumber" name="199" href="#199">199</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="200" href="#200">200</a>         tm.close();
+<a class="jxr_linenumber" name="201" href="#201">201</a>         txTable.close();
+<a class="jxr_linenumber" name="202" href="#202">202</a>     }
 <a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">void</strong> setRowIdGenerator(<a href="../../../../org/apache/omid/examples/RowIdGenerator.html">RowIdGenerator</a> rowIdGenerator) {
-<a class="jxr_linenumber" name="205" href="#205">205</a>         <strong class="jxr_keyword">this</strong>.rowIdGenerator = rowIdGenerator;
-<a class="jxr_linenumber" name="206" href="#206">206</a>     }
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">StaticRowIdGenerator</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/examples/RowIdGenerator.html">RowIdGenerator</a> {
-<a class="jxr_linenumber" name="209" href="#209">209</a> 
-<a class="jxr_linenumber" name="210" href="#210">210</a>         @Override
-<a class="jxr_linenumber" name="211" href="#211">211</a>         <strong class="jxr_keyword">public</strong> byte[] getRowId() {
-<a class="jxr_linenumber" name="212" href="#212">212</a>             <strong class="jxr_keyword">return</strong> Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW"</span>);
-<a class="jxr_linenumber" name="213" href="#213">213</a>         }
-<a class="jxr_linenumber" name="214" href="#214">214</a>     }
-<a class="jxr_linenumber" name="215" href="#215">215</a> }
-<a class="jxr_linenumber" name="216" href="#216">216</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a> 
+<a class="jxr_linenumber" name="205" href="#205">205</a>     <strong class="jxr_keyword">void</strong> setRowIdGenerator(<a href="../../../../org/apache/omid/examples/RowIdGenerator.html">RowIdGenerator</a> rowIdGenerator) {
+<a class="jxr_linenumber" name="206" href="#206">206</a>         <strong class="jxr_keyword">this</strong>.rowIdGenerator = rowIdGenerator;
+<a class="jxr_linenumber" name="207" href="#207">207</a>     }
+<a class="jxr_linenumber" name="208" href="#208">208</a> 
+<a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/examples/SnapshotIsolationExample.html">StaticRowIdGenerator</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/examples/RowIdGenerator.html">RowIdGenerator</a> {
+<a class="jxr_linenumber" name="210" href="#210">210</a> 
+<a class="jxr_linenumber" name="211" href="#211">211</a>         @Override
+<a class="jxr_linenumber" name="212" href="#212">212</a>         <strong class="jxr_keyword">public</strong> byte[] getRowId() {
+<a class="jxr_linenumber" name="213" href="#213">213</a>             <strong class="jxr_keyword">return</strong> Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW"</span>);
+<a class="jxr_linenumber" name="214" href="#214">214</a>         }
+<a class="jxr_linenumber" name="215" href="#215">215</a>     }
+<a class="jxr_linenumber" name="216" href="#216">216</a> }
+<a class="jxr_linenumber" name="217" href="#217">217</a> 
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/examples/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/examples/package-frame.html b/xref/org/apache/omid/examples/package-frame.html
index 37229f6..b90ba79 100644
--- a/xref/org/apache/omid/examples/package-frame.html
+++ b/xref/org/apache/omid/examples/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.examples</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.examples</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/examples/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/examples/package-summary.html b/xref/org/apache/omid/examples/package-summary.html
index 69f6ea6..7f95648 100644
--- a/xref/org/apache/omid/examples/package-summary.html
+++ b/xref/org/apache/omid/examples/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.examples</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.examples</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/metrics/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/metrics/package-frame.html b/xref/org/apache/omid/metrics/package-frame.html
index d36aa22..8b42882 100644
--- a/xref/org/apache/omid/metrics/package-frame.html
+++ b/xref/org/apache/omid/metrics/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.metrics</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.metrics</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/metrics/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/metrics/package-summary.html b/xref/org/apache/omid/metrics/package-summary.html
index fd9ddc1..e8bafbf 100644
--- a/xref/org/apache/omid/metrics/package-summary.html
+++ b/xref/org/apache/omid/metrics/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.metrics</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.metrics</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/package-frame.html b/xref/org/apache/omid/package-frame.html
index ef89ca7..b5d3d76 100644
--- a/xref/org/apache/omid/package-frame.html
+++ b/xref/org/apache/omid/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid</title>
 		<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -25,10 +25,7 @@
             	<a href="NetworkUtils.html" target="classFrame">NetworkUtils</a>
           	</li>
           	          	<li>
-            	<a href="ReflectionHelper.html" target="classFrame">ReflectionHelper</a>
-          	</li>
-          	          	<li>
-            	<a href="RegionWrapper.html" target="classFrame">RegionWrapper</a>
+            	<a href="OmidFilterBase.html" target="classFrame">OmidFilterBase</a>
           	</li>
           	          	<li>
             	<a href="YAMLUtils.html" target="classFrame">YAMLUtils</a>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/package-summary.html b/xref/org/apache/omid/package-summary.html
index 0a1d219..41232f7 100644
--- a/xref/org/apache/omid/package-summary.html
+++ b/xref/org/apache/omid/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid</title>
 		<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -52,12 +52,7 @@
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="ReflectionHelper.html" target="classFrame">ReflectionHelper</a>
-              		</td>
-            	</tr>
-				            	<tr>
-              		<td>
-                		<a href="RegionWrapper.html" target="classFrame">RegionWrapper</a>
+                		<a href="OmidFilterBase.html" target="classFrame">OmidFilterBase</a>
               		</td>
             	</tr>
 				            	<tr>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/timestamp/storage/HBaseTimestampStorage.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/timestamp/storage/HBaseTimestampStorage.html b/xref/org/apache/omid/timestamp/storage/HBaseTimestampStorage.html
index d17f76f..4d588b2 100644
--- a/xref/org/apache/omid/timestamp/storage/HBaseTimestampStorage.html
+++ b/xref/org/apache/omid/timestamp/storage/HBaseTimestampStorage.html
@@ -27,76 +27,81 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.timestamp.storage;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTable;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> javax.inject.Inject;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> com.google.common.base.Charsets.UTF_8;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * Stores the max timestamp assigned by the TO in HBase.</em>
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * It's always written non-transactionally in the same row and column</em>
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/timestamp/storage/HBaseTimestampStorage.html">HBaseTimestampStorage</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/omid/timestamp/storage/TimestampStorage.html">TimestampStorage</a> {
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> INITIAL_MAX_TS_VALUE = 0;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseTimestampStorage.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> com.google.common.base.Charsets.UTF_8;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> javax.inject.Inject;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * Stores the max timestamp assigned by the TO in HBase.</em>
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * It's always written non-transactionally in the same row and column</em>
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/timestamp/storage/HBaseTimestampStorage.html">HBaseTimestampStorage</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/omid/timestamp/storage/TimestampStorage.html">TimestampStorage</a> {
 <a class="jxr_linenumber" name="43" href="#43">43</a>  
-<a class="jxr_linenumber" name="44" href="#44">44</a>      <em class="jxr_comment">// ROW and COLUMN to write the assigned timestamp</em>
-<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] TSO_ROW = <span class="jxr_string">"MAX_TIMESTAMP_R"</span>.getBytes(UTF_8);
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] TSO_QUALIFIER = <span class="jxr_string">"MAX_TIMESTAMP_Q"</span>.getBytes(UTF_8);
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> INITIAL_MAX_TS_VALUE = 0;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseTimestampStorage.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> HTable table;
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] cfName;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>      @Inject
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/omid/timestamp/storage/HBaseTimestampStorage.html">HBaseTimestampStorage</a>(Configuration hbaseConfig, <a href="../../../../../org/apache/omid/timestamp/storage/HBaseTimestampStorageConfig.html">HBaseTimestampStorageConfig</a> config) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">this</strong>.table = <strong class="jxr_keyword">new</strong> HTable(hbaseConfig, config.getTableName());
-<a class="jxr_linenumber" name="54" href="#54">54</a>          <strong class="jxr_keyword">this</strong>.cfName = config.getFamilyName().getBytes(UTF_8);
-<a class="jxr_linenumber" name="55" href="#55">55</a>      }
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>      @Override
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> updateMaxTimestamp(<strong class="jxr_keyword">long</strong> previousMaxTimestamp, <strong class="jxr_keyword">long</strong> newMaxTimestamp) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="59" href="#59">59</a>          <strong class="jxr_keyword">if</strong> (newMaxTimestamp &lt; 0) {
-<a class="jxr_linenumber" name="60" href="#60">60</a>              LOG.error(<span class="jxr_string">"Negative value received for maxTimestamp: {}"</span>, newMaxTimestamp);
-<a class="jxr_linenumber" name="61" href="#61">61</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Negative value received for maxTimestamp"</span> + newMaxTimestamp);
-<a class="jxr_linenumber" name="62" href="#62">62</a>          }
-<a class="jxr_linenumber" name="63" href="#63">63</a>          Put put = <strong class="jxr_keyword">new</strong> Put(TSO_ROW);
-<a class="jxr_linenumber" name="64" href="#64">64</a>          put.add(cfName, TSO_QUALIFIER, Bytes.toBytes(newMaxTimestamp));
-<a class="jxr_linenumber" name="65" href="#65">65</a>          byte[] previousVal = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="66" href="#66">66</a>          <strong class="jxr_keyword">if</strong> (previousMaxTimestamp != INITIAL_MAX_TS_VALUE) {
-<a class="jxr_linenumber" name="67" href="#67">67</a>              previousVal = Bytes.toBytes(previousMaxTimestamp);
-<a class="jxr_linenumber" name="68" href="#68">68</a>          }
-<a class="jxr_linenumber" name="69" href="#69">69</a>          <strong class="jxr_keyword">if</strong> (!table.checkAndPut(TSO_ROW, cfName, TSO_QUALIFIER, previousVal, put)) {
-<a class="jxr_linenumber" name="70" href="#70">70</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Previous max timestamp is incorrect"</span>);
-<a class="jxr_linenumber" name="71" href="#71">71</a>          }
-<a class="jxr_linenumber" name="72" href="#72">72</a>      }
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>      @Override
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getMaxTimestamp() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="76" href="#76">76</a>          Get get = <strong class="jxr_keyword">new</strong> Get(TSO_ROW);
-<a class="jxr_linenumber" name="77" href="#77">77</a>          get.addColumn(cfName, TSO_QUALIFIER);
+<a class="jxr_linenumber" name="48" href="#48">48</a>      <em class="jxr_comment">// ROW and COLUMN to write the assigned timestamp</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] TSO_ROW = <span class="jxr_string">"MAX_TIMESTAMP_R"</span>.getBytes(UTF_8);
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] TSO_QUALIFIER = <span class="jxr_string">"MAX_TIMESTAMP_Q"</span>.getBytes(UTF_8);
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Table table;
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] cfName;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>      @Inject
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/omid/timestamp/storage/HBaseTimestampStorage.html">HBaseTimestampStorage</a>(Configuration hbaseConfig, <a href="../../../../../org/apache/omid/timestamp/storage/HBaseTimestampStorageConfig.html">HBaseTimestampStorageConfig</a> config) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="57" href="#57">57</a>          Connection conn = ConnectionFactory.createConnection(hbaseConfig);
+<a class="jxr_linenumber" name="58" href="#58">58</a>          <strong class="jxr_keyword">this</strong>.table = conn.getTable(TableName.valueOf(config.getTableName()));
+<a class="jxr_linenumber" name="59" href="#59">59</a>          <strong class="jxr_keyword">this</strong>.cfName = config.getFamilyName().getBytes(UTF_8);
+<a class="jxr_linenumber" name="60" href="#60">60</a>      }
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      @Override
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> updateMaxTimestamp(<strong class="jxr_keyword">long</strong> previousMaxTimestamp, <strong class="jxr_keyword">long</strong> newMaxTimestamp) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">if</strong> (newMaxTimestamp &lt; 0) {
+<a class="jxr_linenumber" name="65" href="#65">65</a>              LOG.error(<span class="jxr_string">"Negative value received for maxTimestamp: {}"</span>, newMaxTimestamp);
+<a class="jxr_linenumber" name="66" href="#66">66</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Negative value received for maxTimestamp"</span> + newMaxTimestamp);
+<a class="jxr_linenumber" name="67" href="#67">67</a>          }
+<a class="jxr_linenumber" name="68" href="#68">68</a>          Put put = <strong class="jxr_keyword">new</strong> Put(TSO_ROW);
+<a class="jxr_linenumber" name="69" href="#69">69</a>          put.addColumn(cfName, TSO_QUALIFIER, Bytes.toBytes(newMaxTimestamp));
+<a class="jxr_linenumber" name="70" href="#70">70</a>          byte[] previousVal = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">if</strong> (previousMaxTimestamp != INITIAL_MAX_TS_VALUE) {
+<a class="jxr_linenumber" name="72" href="#72">72</a>              previousVal = Bytes.toBytes(previousMaxTimestamp);
+<a class="jxr_linenumber" name="73" href="#73">73</a>          }
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">if</strong> (!table.checkAndPut(TSO_ROW, cfName, TSO_QUALIFIER, previousVal, put)) {
+<a class="jxr_linenumber" name="75" href="#75">75</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Previous max timestamp is incorrect"</span>);
+<a class="jxr_linenumber" name="76" href="#76">76</a>          }
+<a class="jxr_linenumber" name="77" href="#77">77</a>      }
 <a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>          Result result = table.get(get);
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">if</strong> (result.containsColumn(cfName, TSO_QUALIFIER)) {
-<a class="jxr_linenumber" name="81" href="#81">81</a>              <strong class="jxr_keyword">return</strong> Bytes.toLong(result.getValue(cfName, TSO_QUALIFIER));
-<a class="jxr_linenumber" name="82" href="#82">82</a>          } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="83" href="#83">83</a>              <em class="jxr_comment">// This happens for example when a new cluster is created</em>
-<a class="jxr_linenumber" name="84" href="#84">84</a>              <strong class="jxr_keyword">return</strong> INITIAL_MAX_TS_VALUE;
-<a class="jxr_linenumber" name="85" href="#85">85</a>          }
-<a class="jxr_linenumber" name="86" href="#86">86</a>  
-<a class="jxr_linenumber" name="87" href="#87">87</a>      }
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>  }
+<a class="jxr_linenumber" name="79" href="#79">79</a>      @Override
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getMaxTimestamp() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="81" href="#81">81</a>          Get get = <strong class="jxr_keyword">new</strong> Get(TSO_ROW);
+<a class="jxr_linenumber" name="82" href="#82">82</a>          get.addColumn(cfName, TSO_QUALIFIER);
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>          Result result = table.get(get);
+<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">if</strong> (result.containsColumn(cfName, TSO_QUALIFIER)) {
+<a class="jxr_linenumber" name="86" href="#86">86</a>              <strong class="jxr_keyword">return</strong> Bytes.toLong(result.getValue(cfName, TSO_QUALIFIER));
+<a class="jxr_linenumber" name="87" href="#87">87</a>          } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="88" href="#88">88</a>              <em class="jxr_comment">// This happens for example when a new cluster is created</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>              <strong class="jxr_keyword">return</strong> INITIAL_MAX_TS_VALUE;
+<a class="jxr_linenumber" name="90" href="#90">90</a>          }
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>      }
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/timestamp/storage/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/timestamp/storage/package-frame.html b/xref/org/apache/omid/timestamp/storage/package-frame.html
index 4ccd643..8f36b47 100644
--- a/xref/org/apache/omid/timestamp/storage/package-frame.html
+++ b/xref/org/apache/omid/timestamp/storage/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.timestamp.storage</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.timestamp.storage</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/timestamp/storage/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/timestamp/storage/package-summary.html b/xref/org/apache/omid/timestamp/storage/package-summary.html
index 3184dc4..3fbab49 100644
--- a/xref/org/apache/omid/timestamp/storage/package-summary.html
+++ b/xref/org/apache/omid/timestamp/storage/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.timestamp.storage</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.timestamp.storage</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>


[22/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/client/TestTSOClientRequestAndResponseBehaviours.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/client/TestTSOClientRequestAndResponseBehaviours.html b/xref-test/org/apache/omid/tso/client/TestTSOClientRequestAndResponseBehaviours.html
index baf85c5..cdfdeee 100644
--- a/xref-test/org/apache/omid/tso/client/TestTSOClientRequestAndResponseBehaviours.html
+++ b/xref-test/org/apache/omid/tso/client/TestTSOClientRequestAndResponseBehaviours.html
@@ -31,394 +31,396 @@
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
 <a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
 <a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Module;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.proto.TSOProto;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.PausableTimestampOracle;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TimestampOracle;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.util.DummyCellIdImpl;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Future;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestTSOClientRequestAndResponseBehaviours.html">TestTSOClientRequestAndResponseBehaviours</a> {
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.proto.TSOProto;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.AbstractTransactionManager;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.PausableTimestampOracle;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TimestampOracle;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.util.DummyCellIdImpl;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Future;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
 <a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTSOClientRequestAndResponseBehaviours.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestTSOClientRequestAndResponseBehaviours.html">TestTSOClientRequestAndResponseBehaviours</a> {
 <a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO_SERVER_PORT = 1234;
-<a class="jxr_linenumber" name="57" href="#57">57</a>  
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL);
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xfeedcafeL);
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> Set&lt;CellId&gt; testWriteSet = Sets.newHashSet(c1, c2);
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTSOClientRequestAndResponseBehaviours.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO_SERVER_PORT = 1234;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL);
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xfeedcafeL);
 <a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> OmidClientConfiguration tsoClientConf;
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> Set&lt;CellId&gt; testWriteSet = Sets.newHashSet(c1, c2);
 <a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <em class="jxr_comment">// Required infrastructure for TSOClient test</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> TSOServer tsoServer;
-<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/omid/tso/PausableTimestampOracle.html">PausableTimestampOracle</a> pausableTSOracle;
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> CommitTable commitTable;
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>      @BeforeMethod
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeMethod() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="72" href="#72">72</a>  
-<a class="jxr_linenumber" name="73" href="#73">73</a>          TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="74" href="#74">74</a>          tsoConfig.setConflictMapSize(1000);
-<a class="jxr_linenumber" name="75" href="#75">75</a>          tsoConfig.setPort(TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="76" href="#76">76</a>          tsoConfig.setNumConcurrentCTWriters(2);
-<a class="jxr_linenumber" name="77" href="#77">77</a>          Module tsoServerMockModule = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig);
-<a class="jxr_linenumber" name="78" href="#78">78</a>          Injector injector = Guice.createInjector(tsoServerMockModule);
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="81" href="#81">81</a>          LOG.info(<span class="jxr_string">"======================================= Init TSO Server =========================================="</span>);
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> OmidClientConfiguration tsoClientConf;
+<a class="jxr_linenumber" name="66" href="#66">66</a>  
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <em class="jxr_comment">// Required infrastructure for TSOClient test</em>
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> TSOServer tsoServer;
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/omid/tso/PausableTimestampOracle.html">PausableTimestampOracle</a> pausableTSOracle;
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> CommitTable commitTable;
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      @BeforeMethod
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeMethod() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>          TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="76" href="#76">76</a>          tsoConfig.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          tsoConfig.setPort(TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="78" href="#78">78</a>          tsoConfig.setNumConcurrentCTWriters(2);
+<a class="jxr_linenumber" name="79" href="#79">79</a>          Module tsoServerMockModule = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig);
+<a class="jxr_linenumber" name="80" href="#80">80</a>          Injector injector = Guice.createInjector(tsoServerMockModule);
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
 <a class="jxr_linenumber" name="82" href="#82">82</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>          tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="85" href="#85">85</a>          tsoServer.startAndWait();
-<a class="jxr_linenumber" name="86" href="#86">86</a>          TestUtils.waitForSocketListening(TSO_SERVER_HOST, TSO_SERVER_PORT, 100);
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="89" href="#89">89</a>          LOG.info(<span class="jxr_string">"===================================== TSO Server Initialized ====================================="</span>);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          LOG.info(<span class="jxr_string">"======================================= Init TSO Server =========================================="</span>);
+<a class="jxr_linenumber" name="84" href="#84">84</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>          tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="87" href="#87">87</a>          tsoServer.startAndWait();
+<a class="jxr_linenumber" name="88" href="#88">88</a>          TestUtils.waitForSocketListening(TSO_SERVER_HOST, TSO_SERVER_PORT, 100);
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
 <a class="jxr_linenumber" name="90" href="#90">90</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>          pausableTSOracle = (PausableTimestampOracle) injector.getInstance(TimestampOracle.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="93" href="#93">93</a>          commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="94" href="#94">94</a>  
-<a class="jxr_linenumber" name="95" href="#95">95</a>          OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="96" href="#96">96</a>          tsoClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="97" href="#97">97</a>  
-<a class="jxr_linenumber" name="98" href="#98">98</a>          <strong class="jxr_keyword">this</strong>.tsoClientConf = tsoClientConf;
+<a class="jxr_linenumber" name="91" href="#91">91</a>          LOG.info(<span class="jxr_string">"===================================== TSO Server Initialized ====================================="</span>);
+<a class="jxr_linenumber" name="92" href="#92">92</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>          pausableTSOracle = (PausableTimestampOracle) injector.getInstance(TimestampOracle.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="95" href="#95">95</a>          commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>          OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="98" href="#98">98</a>          tsoClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
 <a class="jxr_linenumber" name="99" href="#99">99</a>  
-<a class="jxr_linenumber" name="100" href="#100">100</a>     }
+<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">this</strong>.tsoClientConf = tsoClientConf;
 <a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>     @AfterMethod
-<a class="jxr_linenumber" name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterMethod() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="104" href="#104">104</a> 
-<a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>         tsoServer.stopAndWait();
-<a class="jxr_linenumber" name="107" href="#107">107</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="108" href="#108">108</a>         TestUtils.waitForSocketNotListening(TSO_SERVER_HOST, TSO_SERVER_PORT, 1000);
-<a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>         pausableTSOracle.resume();
+<a class="jxr_linenumber" name="102" href="#102">102</a>     }
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>     @AfterMethod
+<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterMethod() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="106" href="#106">106</a> 
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>         tsoServer.stopAndWait();
+<a class="jxr_linenumber" name="109" href="#109">109</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="110" href="#110">110</a>         TestUtils.waitForSocketNotListening(TSO_SERVER_HOST, TSO_SERVER_PORT, 1000);
 <a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>     }
+<a class="jxr_linenumber" name="112" href="#112">112</a>         pausableTSOracle.resume();
 <a class="jxr_linenumber" name="113" href="#113">113</a> 
-<a class="jxr_linenumber" name="114" href="#114">114</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="115" href="#115">115</a> <em class="jxr_javadoccomment">     * Test to ensure TSOClient timeouts are cancelled.</em>
-<a class="jxr_linenumber" name="116" href="#116">116</a> <em class="jxr_javadoccomment">     * At some point a bug was detected because the TSOClient timeouts were not cancelled, and as timestamp requests</em>
-<a class="jxr_linenumber" name="117" href="#117">117</a> <em class="jxr_javadoccomment">     * had no way to be correlated to timestamp responses, random requests were just timed out after a certain time.</em>
-<a class="jxr_linenumber" name="118" href="#118">118</a> <em class="jxr_javadoccomment">     * We send a lot of timestamp requests, and wait for them to complete.</em>
-<a class="jxr_linenumber" name="119" href="#119">119</a> <em class="jxr_javadoccomment">     * Ensure that the next request doesn't get hit by the timeouts of the previous</em>
-<a class="jxr_linenumber" name="120" href="#120">120</a> <em class="jxr_javadoccomment">     * requests. (i.e. make sure we cancel timeouts)</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimeoutsAreCancelled() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="126" href="#126">126</a>         <strong class="jxr_keyword">int</strong> requestTimeoutInMs = 500;
-<a class="jxr_linenumber" name="127" href="#127">127</a>         <strong class="jxr_keyword">int</strong> requestMaxRetries = 5;
-<a class="jxr_linenumber" name="128" href="#128">128</a>         LOG.info(<span class="jxr_string">"Request timeout {} ms; Max retries {}"</span>, requestTimeoutInMs, requestMaxRetries);
-<a class="jxr_linenumber" name="129" href="#129">129</a>         Future&lt;Long&gt; f = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="130" href="#130">130</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; (requestMaxRetries * 10); i++) {
-<a class="jxr_linenumber" name="131" href="#131">131</a>             f = client.getNewStartTimestamp();
-<a class="jxr_linenumber" name="132" href="#132">132</a>         }
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">if</strong> (f != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="134" href="#134">134</a>             f.get();
-<a class="jxr_linenumber" name="135" href="#135">135</a>         }
-<a class="jxr_linenumber" name="136" href="#136">136</a>         pausableTSOracle.pause();
-<a class="jxr_linenumber" name="137" href="#137">137</a>         <strong class="jxr_keyword">long</strong> msToSleep = ((<strong class="jxr_keyword">long</strong>) (requestTimeoutInMs * 0.75));
-<a class="jxr_linenumber" name="138" href="#138">138</a>         LOG.info(<span class="jxr_string">"Sleeping for {} ms"</span>, msToSleep);
-<a class="jxr_linenumber" name="139" href="#139">139</a>         TimeUnit.MILLISECONDS.sleep(msToSleep);
-<a class="jxr_linenumber" name="140" href="#140">140</a>         f = client.getNewStartTimestamp();
-<a class="jxr_linenumber" name="141" href="#141">141</a>         msToSleep = ((<strong class="jxr_keyword">long</strong>) (requestTimeoutInMs * 0.9));
-<a class="jxr_linenumber" name="142" href="#142">142</a>         LOG.info(<span class="jxr_string">"Sleeping for {} ms"</span>, msToSleep);
-<a class="jxr_linenumber" name="143" href="#143">143</a>         TimeUnit.MILLISECONDS.sleep(msToSleep);
-<a class="jxr_linenumber" name="144" href="#144">144</a>         LOG.info(<span class="jxr_string">"Resuming"</span>);
-<a class="jxr_linenumber" name="145" href="#145">145</a>         pausableTSOracle.resume();
-<a class="jxr_linenumber" name="146" href="#146">146</a>         f.get();
-<a class="jxr_linenumber" name="147" href="#147">147</a> 
-<a class="jxr_linenumber" name="148" href="#148">148</a>     }
+<a class="jxr_linenumber" name="114" href="#114">114</a>     }
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="117" href="#117">117</a> <em class="jxr_javadoccomment">     * Test to ensure TSOClient timeouts are cancelled.</em>
+<a class="jxr_linenumber" name="118" href="#118">118</a> <em class="jxr_javadoccomment">     * At some point a bug was detected because the TSOClient timeouts were not cancelled, and as timestamp requests</em>
+<a class="jxr_linenumber" name="119" href="#119">119</a> <em class="jxr_javadoccomment">     * had no way to be correlated to timestamp responses, random requests were just timed out after a certain time.</em>
+<a class="jxr_linenumber" name="120" href="#120">120</a> <em class="jxr_javadoccomment">     * We send a lot of timestamp requests, and wait for them to complete.</em>
+<a class="jxr_linenumber" name="121" href="#121">121</a> <em class="jxr_javadoccomment">     * Ensure that the next request doesn't get hit by the timeouts of the previous</em>
+<a class="jxr_linenumber" name="122" href="#122">122</a> <em class="jxr_javadoccomment">     * requests. (i.e. make sure we cancel timeouts)</em>
+<a class="jxr_linenumber" name="123" href="#123">123</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="124" href="#124">124</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimeoutsAreCancelled() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="126" href="#126">126</a> 
+<a class="jxr_linenumber" name="127" href="#127">127</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="128" href="#128">128</a>         <strong class="jxr_keyword">int</strong> requestTimeoutInMs = 500;
+<a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">int</strong> requestMaxRetries = 5;
+<a class="jxr_linenumber" name="130" href="#130">130</a>         LOG.info(<span class="jxr_string">"Request timeout {} ms; Max retries {}"</span>, requestTimeoutInMs, requestMaxRetries);
+<a class="jxr_linenumber" name="131" href="#131">131</a>         Future&lt;Long&gt; f = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; (requestMaxRetries * 10); i++) {
+<a class="jxr_linenumber" name="133" href="#133">133</a>             f = client.getNewStartTimestamp();
+<a class="jxr_linenumber" name="134" href="#134">134</a>         }
+<a class="jxr_linenumber" name="135" href="#135">135</a>         <strong class="jxr_keyword">if</strong> (f != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="136" href="#136">136</a>             f.get();
+<a class="jxr_linenumber" name="137" href="#137">137</a>         }
+<a class="jxr_linenumber" name="138" href="#138">138</a>         pausableTSOracle.pause();
+<a class="jxr_linenumber" name="139" href="#139">139</a>         <strong class="jxr_keyword">long</strong> msToSleep = ((<strong class="jxr_keyword">long</strong>) (requestTimeoutInMs * 0.75));
+<a class="jxr_linenumber" name="140" href="#140">140</a>         LOG.info(<span class="jxr_string">"Sleeping for {} ms"</span>, msToSleep);
+<a class="jxr_linenumber" name="141" href="#141">141</a>         TimeUnit.MILLISECONDS.sleep(msToSleep);
+<a class="jxr_linenumber" name="142" href="#142">142</a>         f = client.getNewStartTimestamp();
+<a class="jxr_linenumber" name="143" href="#143">143</a>         msToSleep = ((<strong class="jxr_keyword">long</strong>) (requestTimeoutInMs * 0.9));
+<a class="jxr_linenumber" name="144" href="#144">144</a>         LOG.info(<span class="jxr_string">"Sleeping for {} ms"</span>, msToSleep);
+<a class="jxr_linenumber" name="145" href="#145">145</a>         TimeUnit.MILLISECONDS.sleep(msToSleep);
+<a class="jxr_linenumber" name="146" href="#146">146</a>         LOG.info(<span class="jxr_string">"Resuming"</span>);
+<a class="jxr_linenumber" name="147" href="#147">147</a>         pausableTSOracle.resume();
+<a class="jxr_linenumber" name="148" href="#148">148</a>         f.get();
 <a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="151" href="#151">151</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitGetsServiceUnavailableExceptionWhenCommunicationFails() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="152" href="#152">152</a> 
-<a class="jxr_linenumber" name="153" href="#153">153</a>         OmidClientConfiguration testTSOClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="154" href="#154">154</a>         testTSOClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="155" href="#155">155</a>         testTSOClientConf.setRequestMaxRetries(0);
-<a class="jxr_linenumber" name="156" href="#156">156</a>         TSOClient client = TSOClient.newInstance(testTSOClientConf);
-<a class="jxr_linenumber" name="157" href="#157">157</a> 
-<a class="jxr_linenumber" name="158" href="#158">158</a>         List&lt;Long&gt; startTimestamps = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="159" href="#159">159</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 10; i++) {
-<a class="jxr_linenumber" name="160" href="#160">160</a>             startTimestamps.add(client.getNewStartTimestamp().get());
-<a class="jxr_linenumber" name="161" href="#161">161</a>         }
-<a class="jxr_linenumber" name="162" href="#162">162</a> 
-<a class="jxr_linenumber" name="163" href="#163">163</a>         pausableTSOracle.pause();
+<a class="jxr_linenumber" name="150" href="#150">150</a>     }
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="153" href="#153">153</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitGetsServiceUnavailableExceptionWhenCommunicationFails() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>         OmidClientConfiguration testTSOClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="156" href="#156">156</a>         testTSOClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="157" href="#157">157</a>         testTSOClientConf.setRequestMaxRetries(0);
+<a class="jxr_linenumber" name="158" href="#158">158</a>         TSOClient client = TSOClient.newInstance(testTSOClientConf);
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>         List&lt;Long&gt; startTimestamps = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 10; i++) {
+<a class="jxr_linenumber" name="162" href="#162">162</a>             startTimestamps.add(client.getNewStartTimestamp().get());
+<a class="jxr_linenumber" name="163" href="#163">163</a>         }
 <a class="jxr_linenumber" name="164" href="#164">164</a> 
-<a class="jxr_linenumber" name="165" href="#165">165</a>         List&lt;Future&lt;Long&gt;&gt; futures = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="166" href="#166">166</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> s : startTimestamps) {
-<a class="jxr_linenumber" name="167" href="#167">167</a>             futures.add(client.commit(s, Sets.&lt;CellId&gt;newHashSet()));
-<a class="jxr_linenumber" name="168" href="#168">168</a>         }
-<a class="jxr_linenumber" name="169" href="#169">169</a>         TSOClientAccessor.closeChannel(client);
-<a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">for</strong> (Future&lt;Long&gt; f : futures) {
-<a class="jxr_linenumber" name="172" href="#172">172</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="173" href="#173">173</a>                 f.get();
-<a class="jxr_linenumber" name="174" href="#174">174</a>                 fail(<span class="jxr_string">"Shouldn't be able to complete"</span>);
-<a class="jxr_linenumber" name="175" href="#175">175</a>             } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
-<a class="jxr_linenumber" name="176" href="#176">176</a>                 assertTrue(ee.getCause() instanceof ServiceUnavailableException,
-<a class="jxr_linenumber" name="177" href="#177">177</a>                            <span class="jxr_string">"Should be a service unavailable exception"</span>);
-<a class="jxr_linenumber" name="178" href="#178">178</a>             }
-<a class="jxr_linenumber" name="179" href="#179">179</a>         }
-<a class="jxr_linenumber" name="180" href="#180">180</a>     }
-<a class="jxr_linenumber" name="181" href="#181">181</a> 
-<a class="jxr_linenumber" name="182" href="#182">182</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="183" href="#183">183</a> <em class="jxr_javadoccomment">     * Test that if a client tries to make a request without handshaking, it will be disconnected.</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="185" href="#185">185</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testHandshakeBetweenOldClientAndCurrentServer() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientRaw.html">TSOClientRaw</a> raw = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientRaw.html">TSOClientRaw</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="165" href="#165">165</a>         pausableTSOracle.pause();
+<a class="jxr_linenumber" name="166" href="#166">166</a> 
+<a class="jxr_linenumber" name="167" href="#167">167</a>         List&lt;Future&lt;Long&gt;&gt; futures = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="168" href="#168">168</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> s : startTimestamps) {
+<a class="jxr_linenumber" name="169" href="#169">169</a>             futures.add(client.commit(s, Sets.&lt;CellId&gt;newHashSet()));
+<a class="jxr_linenumber" name="170" href="#170">170</a>         }
+<a class="jxr_linenumber" name="171" href="#171">171</a>         TSOClientAccessor.closeChannel(client);
+<a class="jxr_linenumber" name="172" href="#172">172</a> 
+<a class="jxr_linenumber" name="173" href="#173">173</a>         <strong class="jxr_keyword">for</strong> (Future&lt;Long&gt; f : futures) {
+<a class="jxr_linenumber" name="174" href="#174">174</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="175" href="#175">175</a>                 f.get();
+<a class="jxr_linenumber" name="176" href="#176">176</a>                 fail(<span class="jxr_string">"Shouldn't be able to complete"</span>);
+<a class="jxr_linenumber" name="177" href="#177">177</a>             } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="178" href="#178">178</a>                 assertTrue(ee.getCause() instanceof ServiceUnavailableException,
+<a class="jxr_linenumber" name="179" href="#179">179</a>                            <span class="jxr_string">"Should be a service unavailable exception"</span>);
+<a class="jxr_linenumber" name="180" href="#180">180</a>             }
+<a class="jxr_linenumber" name="181" href="#181">181</a>         }
+<a class="jxr_linenumber" name="182" href="#182">182</a>     }
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="185" href="#185">185</a> <em class="jxr_javadoccomment">     * Test that if a client tries to make a request without handshaking, it will be disconnected.</em>
+<a class="jxr_linenumber" name="186" href="#186">186</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="187" href="#187">187</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="188" href="#188">188</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testHandshakeBetweenOldClientAndCurrentServer() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="189" href="#189">189</a> 
-<a class="jxr_linenumber" name="190" href="#190">190</a>         TSOProto.Request request = TSOProto.Request.newBuilder()
-<a class="jxr_linenumber" name="191" href="#191">191</a>                 .setTimestampRequest(TSOProto.TimestampRequest.newBuilder().build())
-<a class="jxr_linenumber" name="192" href="#192">192</a>                 .build();
-<a class="jxr_linenumber" name="193" href="#193">193</a>         raw.write(request);
-<a class="jxr_linenumber" name="194" href="#194">194</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="195" href="#195">195</a>             raw.getResponse().get();
-<a class="jxr_linenumber" name="196" href="#196">196</a>             fail(<span class="jxr_string">"Channel should be closed"</span>);
-<a class="jxr_linenumber" name="197" href="#197">197</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
-<a class="jxr_linenumber" name="198" href="#198">198</a>             assertEquals(ee.getCause().getClass(), ConnectionException.<strong class="jxr_keyword">class</strong>, <span class="jxr_string">"Should be channel closed exception"</span>);
-<a class="jxr_linenumber" name="199" href="#199">199</a>         }
-<a class="jxr_linenumber" name="200" href="#200">200</a>         raw.close();
-<a class="jxr_linenumber" name="201" href="#201">201</a> 
-<a class="jxr_linenumber" name="202" href="#202">202</a>     }
+<a class="jxr_linenumber" name="190" href="#190">190</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientRaw.html">TSOClientRaw</a> raw = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientRaw.html">TSOClientRaw</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="191" href="#191">191</a> 
+<a class="jxr_linenumber" name="192" href="#192">192</a>         TSOProto.Request request = TSOProto.Request.newBuilder()
+<a class="jxr_linenumber" name="193" href="#193">193</a>                 .setTimestampRequest(TSOProto.TimestampRequest.newBuilder().build())
+<a class="jxr_linenumber" name="194" href="#194">194</a>                 .build();
+<a class="jxr_linenumber" name="195" href="#195">195</a>         raw.write(request);
+<a class="jxr_linenumber" name="196" href="#196">196</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="197" href="#197">197</a>             raw.getResponse().get();
+<a class="jxr_linenumber" name="198" href="#198">198</a>             fail(<span class="jxr_string">"Channel should be closed"</span>);
+<a class="jxr_linenumber" name="199" href="#199">199</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="200" href="#200">200</a>             assertEquals(ee.getCause().getClass(), ConnectionException.<strong class="jxr_keyword">class</strong>, <span class="jxr_string">"Should be channel closed exception"</span>);
+<a class="jxr_linenumber" name="201" href="#201">201</a>         }
+<a class="jxr_linenumber" name="202" href="#202">202</a>         raw.close();
 <a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="205" href="#205">205</a>     <em class="jxr_comment">// Test duplicate commits</em>
+<a class="jxr_linenumber" name="204" href="#204">204</a>     }
+<a class="jxr_linenumber" name="205" href="#205">205</a> 
 <a class="jxr_linenumber" name="206" href="#206">206</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="209" href="#209">209</a> <em class="jxr_javadoccomment">     * This tests the case where messages arrive at the TSO out of order. This can happen in the case</em>
-<a class="jxr_linenumber" name="210" href="#210">210</a> <em class="jxr_javadoccomment">     * the channel get dropped and the retry is done in a new channel. However, the TSO will respond with</em>
-<a class="jxr_linenumber" name="211" href="#211">211</a> <em class="jxr_javadoccomment">     * aborted to the original message because the retry was already committed and it would be prohibitively</em>
-<a class="jxr_linenumber" name="212" href="#212">212</a> <em class="jxr_javadoccomment">     * expensive to check all non-retry requests to see if they are already committed. For this reason</em>
-<a class="jxr_linenumber" name="213" href="#213">213</a> <em class="jxr_javadoccomment">     * a client must ensure that if it is sending a retry due to a socket error, the previous channel</em>
-<a class="jxr_linenumber" name="214" href="#214">214</a> <em class="jxr_javadoccomment">     * must be entirely closed so that it will not actually receive the abort response. TCP guarantees</em>
-<a class="jxr_linenumber" name="215" href="#215">215</a> <em class="jxr_javadoccomment">     * that this doesn't happen in non-socket error cases.</em>
-<a class="jxr_linenumber" name="216" href="#216">216</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="217" href="#217">217</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="218" href="#218">218</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="219" href="#219">219</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOutOfOrderMessages() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="220" href="#220">220</a> 
-<a class="jxr_linenumber" name="221" href="#221">221</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="222" href="#222">222</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="223" href="#223">223</a> 
-<a class="jxr_linenumber" name="224" href="#224">224</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="207" href="#207">207</a>     <em class="jxr_comment">// Test duplicate commits</em>
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="209" href="#209">209</a> 
+<a class="jxr_linenumber" name="210" href="#210">210</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="211" href="#211">211</a> <em class="jxr_javadoccomment">     * This tests the case where messages arrive at the TSO out of order. This can happen in the case</em>
+<a class="jxr_linenumber" name="212" href="#212">212</a> <em class="jxr_javadoccomment">     * the channel get dropped and the retry is done in a new channel. However, the TSO will respond with</em>
+<a class="jxr_linenumber" name="213" href="#213">213</a> <em class="jxr_javadoccomment">     * aborted to the original message because the retry was already committed and it would be prohibitively</em>
+<a class="jxr_linenumber" name="214" href="#214">214</a> <em class="jxr_javadoccomment">     * expensive to check all non-retry requests to see if they are already committed. For this reason</em>
+<a class="jxr_linenumber" name="215" href="#215">215</a> <em class="jxr_javadoccomment">     * a client must ensure that if it is sending a retry due to a socket error, the previous channel</em>
+<a class="jxr_linenumber" name="216" href="#216">216</a> <em class="jxr_javadoccomment">     * must be entirely closed so that it will not actually receive the abort response. TCP guarantees</em>
+<a class="jxr_linenumber" name="217" href="#217">217</a> <em class="jxr_javadoccomment">     * that this doesn't happen in non-socket error cases.</em>
+<a class="jxr_linenumber" name="218" href="#218">218</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="219" href="#219">219</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="220" href="#220">220</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="221" href="#221">221</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOutOfOrderMessages() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="222" href="#222">222</a> 
+<a class="jxr_linenumber" name="223" href="#223">223</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="224" href="#224">224</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
 <a class="jxr_linenumber" name="225" href="#225">225</a> 
-<a class="jxr_linenumber" name="226" href="#226">226</a>         TSOProto.Response response1 = clientOneShot.makeRequest(createCommitRequest(ts1, <strong class="jxr_keyword">true</strong>, testWriteSet));
-<a class="jxr_linenumber" name="227" href="#227">227</a>         TSOProto.Response response2 = clientOneShot.makeRequest(createCommitRequest(ts1, false, testWriteSet));
-<a class="jxr_linenumber" name="228" href="#228">228</a>         assertFalse(response1.getCommitResponse().getAborted(), <span class="jxr_string">"Retry Transaction should commit"</span>);
-<a class="jxr_linenumber" name="229" href="#229">229</a>         assertTrue(response2.getCommitResponse().getAborted(), <span class="jxr_string">"Transaction should abort"</span>);
-<a class="jxr_linenumber" name="230" href="#230">230</a>     }
-<a class="jxr_linenumber" name="231" href="#231">231</a> 
-<a class="jxr_linenumber" name="232" href="#232">232</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="233" href="#233">233</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDuplicateCommitAborting() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="234" href="#234">234</a> 
-<a class="jxr_linenumber" name="235" href="#235">235</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="236" href="#236">236</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="237" href="#237">237</a> 
-<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="239" href="#239">239</a>         <strong class="jxr_keyword">long</strong> ts2 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="240" href="#240">240</a>         client.commit(ts2, testWriteSet).get();
-<a class="jxr_linenumber" name="241" href="#241">241</a> 
-<a class="jxr_linenumber" name="242" href="#242">242</a>         TSOProto.Response response1 = clientOneShot.makeRequest(createCommitRequest(ts1, false, testWriteSet));
-<a class="jxr_linenumber" name="243" href="#243">243</a>         TSOProto.Response response2 = clientOneShot.makeRequest(createCommitRequest(ts1, <strong class="jxr_keyword">true</strong>, testWriteSet));
-<a class="jxr_linenumber" name="244" href="#244">244</a>         assertTrue(response1.getCommitResponse().getAborted(), <span class="jxr_string">"Transaction should abort"</span>);
-<a class="jxr_linenumber" name="245" href="#245">245</a>         assertTrue(response2.getCommitResponse().getAborted(), <span class="jxr_string">"Retry commit should abort"</span>);
-<a class="jxr_linenumber" name="246" href="#246">246</a>     }
-<a class="jxr_linenumber" name="247" href="#247">247</a> 
-<a class="jxr_linenumber" name="248" href="#248">248</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="249" href="#249">249</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDuplicateCommit() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="250" href="#250">250</a> 
-<a class="jxr_linenumber" name="251" href="#251">251</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="252" href="#252">252</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="253" href="#253">253</a> 
-<a class="jxr_linenumber" name="254" href="#254">254</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="226" href="#226">226</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="227" href="#227">227</a> 
+<a class="jxr_linenumber" name="228" href="#228">228</a>         TSOProto.Response response1 = clientOneShot.makeRequest(createCommitRequest(ts1, <strong class="jxr_keyword">true</strong>, testWriteSet));
+<a class="jxr_linenumber" name="229" href="#229">229</a>         TSOProto.Response response2 = clientOneShot.makeRequest(createCommitRequest(ts1, false, testWriteSet));
+<a class="jxr_linenumber" name="230" href="#230">230</a>         assertFalse(response1.getCommitResponse().getAborted(), <span class="jxr_string">"Retry Transaction should commit"</span>);
+<a class="jxr_linenumber" name="231" href="#231">231</a>         assertTrue(response2.getCommitResponse().getAborted(), <span class="jxr_string">"Transaction should abort"</span>);
+<a class="jxr_linenumber" name="232" href="#232">232</a>     }
+<a class="jxr_linenumber" name="233" href="#233">233</a> 
+<a class="jxr_linenumber" name="234" href="#234">234</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="235" href="#235">235</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDuplicateCommitAborting() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="236" href="#236">236</a> 
+<a class="jxr_linenumber" name="237" href="#237">237</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="238" href="#238">238</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="239" href="#239">239</a> 
+<a class="jxr_linenumber" name="240" href="#240">240</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="241" href="#241">241</a>         <strong class="jxr_keyword">long</strong> ts2 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="242" href="#242">242</a>         client.commit(ts2, testWriteSet).get();
+<a class="jxr_linenumber" name="243" href="#243">243</a> 
+<a class="jxr_linenumber" name="244" href="#244">244</a>         TSOProto.Response response1 = clientOneShot.makeRequest(createCommitRequest(ts1, false, testWriteSet));
+<a class="jxr_linenumber" name="245" href="#245">245</a>         TSOProto.Response response2 = clientOneShot.makeRequest(createCommitRequest(ts1, <strong class="jxr_keyword">true</strong>, testWriteSet));
+<a class="jxr_linenumber" name="246" href="#246">246</a>         assertTrue(response1.getCommitResponse().getAborted(), <span class="jxr_string">"Transaction should abort"</span>);
+<a class="jxr_linenumber" name="247" href="#247">247</a>         assertTrue(response2.getCommitResponse().getAborted(), <span class="jxr_string">"Retry commit should abort"</span>);
+<a class="jxr_linenumber" name="248" href="#248">248</a>     }
+<a class="jxr_linenumber" name="249" href="#249">249</a> 
+<a class="jxr_linenumber" name="250" href="#250">250</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="251" href="#251">251</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDuplicateCommit() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="252" href="#252">252</a> 
+<a class="jxr_linenumber" name="253" href="#253">253</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="254" href="#254">254</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
 <a class="jxr_linenumber" name="255" href="#255">255</a> 
-<a class="jxr_linenumber" name="256" href="#256">256</a>         TSOProto.Response response1 = clientOneShot.makeRequest(createCommitRequest(ts1, false, testWriteSet));
-<a class="jxr_linenumber" name="257" href="#257">257</a>         TSOProto.Response response2 = clientOneShot.makeRequest(createCommitRequest(ts1, <strong class="jxr_keyword">true</strong>, testWriteSet));
-<a class="jxr_linenumber" name="258" href="#258">258</a>         assertEquals(response2.getCommitResponse().getCommitTimestamp(),
-<a class="jxr_linenumber" name="259" href="#259">259</a>                      response1.getCommitResponse().getCommitTimestamp(),
-<a class="jxr_linenumber" name="260" href="#260">260</a>                      <span class="jxr_string">"Commit timestamp should be the same"</span>);
-<a class="jxr_linenumber" name="261" href="#261">261</a>     }
-<a class="jxr_linenumber" name="262" href="#262">262</a> 
-<a class="jxr_linenumber" name="263" href="#263">263</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="264" href="#264">264</a>     <em class="jxr_comment">// Test TSOClient retry behaviour</em>
+<a class="jxr_linenumber" name="256" href="#256">256</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="257" href="#257">257</a> 
+<a class="jxr_linenumber" name="258" href="#258">258</a>         TSOProto.Response response1 = clientOneShot.makeRequest(createCommitRequest(ts1, false, testWriteSet));
+<a class="jxr_linenumber" name="259" href="#259">259</a>         TSOProto.Response response2 = clientOneShot.makeRequest(createCommitRequest(ts1, <strong class="jxr_keyword">true</strong>, testWriteSet));
+<a class="jxr_linenumber" name="260" href="#260">260</a>         assertEquals(response2.getCommitResponse().getCommitTimestamp(),
+<a class="jxr_linenumber" name="261" href="#261">261</a>                      response1.getCommitResponse().getCommitTimestamp(),
+<a class="jxr_linenumber" name="262" href="#262">262</a>                      <span class="jxr_string">"Commit timestamp should be the same"</span>);
+<a class="jxr_linenumber" name="263" href="#263">263</a>     }
+<a class="jxr_linenumber" name="264" href="#264">264</a> 
 <a class="jxr_linenumber" name="265" href="#265">265</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="266" href="#266">266</a> 
-<a class="jxr_linenumber" name="267" href="#267">267</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="268" href="#268">268</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitCanSucceedWhenChannelDisconnected() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="269" href="#269">269</a> 
-<a class="jxr_linenumber" name="270" href="#270">270</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="266" href="#266">266</a>     <em class="jxr_comment">// Test TSOClient retry behaviour</em>
+<a class="jxr_linenumber" name="267" href="#267">267</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="268" href="#268">268</a> 
+<a class="jxr_linenumber" name="269" href="#269">269</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="270" href="#270">270</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitCanSucceedWhenChannelDisconnected() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="271" href="#271">271</a> 
-<a class="jxr_linenumber" name="272" href="#272">272</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="273" href="#273">273</a>         pausableTSOracle.pause();
-<a class="jxr_linenumber" name="274" href="#274">274</a>         TSOFuture&lt;Long&gt; future = client.commit(ts1, testWriteSet);
-<a class="jxr_linenumber" name="275" href="#275">275</a>         TSOClientAccessor.closeChannel(client);
-<a class="jxr_linenumber" name="276" href="#276">276</a>         pausableTSOracle.resume();
-<a class="jxr_linenumber" name="277" href="#277">277</a>         future.get();
-<a class="jxr_linenumber" name="278" href="#278">278</a> 
-<a class="jxr_linenumber" name="279" href="#279">279</a>     }
+<a class="jxr_linenumber" name="272" href="#272">272</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="273" href="#273">273</a> 
+<a class="jxr_linenumber" name="274" href="#274">274</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="275" href="#275">275</a>         pausableTSOracle.pause();
+<a class="jxr_linenumber" name="276" href="#276">276</a>         TSOFuture&lt;Long&gt; future = client.commit(ts1, testWriteSet);
+<a class="jxr_linenumber" name="277" href="#277">277</a>         TSOClientAccessor.closeChannel(client);
+<a class="jxr_linenumber" name="278" href="#278">278</a>         pausableTSOracle.resume();
+<a class="jxr_linenumber" name="279" href="#279">279</a>         future.get();
 <a class="jxr_linenumber" name="280" href="#280">280</a> 
-<a class="jxr_linenumber" name="281" href="#281">281</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="282" href="#282">282</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitCanSucceedWithMultipleTimeouts() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="283" href="#283">283</a> 
-<a class="jxr_linenumber" name="284" href="#284">284</a>         OmidClientConfiguration testTSOClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="285" href="#285">285</a>         testTSOClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="286" href="#286">286</a>         testTSOClientConf.setRequestTimeoutInMs(100);
-<a class="jxr_linenumber" name="287" href="#287">287</a>         testTSOClientConf.setRequestMaxRetries(10000);
-<a class="jxr_linenumber" name="288" href="#288">288</a>         TSOClient client = TSOClient.newInstance(testTSOClientConf);
-<a class="jxr_linenumber" name="289" href="#289">289</a> 
-<a class="jxr_linenumber" name="290" href="#290">290</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="291" href="#291">291</a>         pausableTSOracle.pause();
-<a class="jxr_linenumber" name="292" href="#292">292</a>         TSOFuture&lt;Long&gt; future = client.commit(ts1, testWriteSet);
-<a class="jxr_linenumber" name="293" href="#293">293</a>         TimeUnit.SECONDS.sleep(1);
-<a class="jxr_linenumber" name="294" href="#294">294</a>         pausableTSOracle.resume();
-<a class="jxr_linenumber" name="295" href="#295">295</a>         future.get();
-<a class="jxr_linenumber" name="296" href="#296">296</a>     }
-<a class="jxr_linenumber" name="297" href="#297">297</a> 
-<a class="jxr_linenumber" name="298" href="#298">298</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="299" href="#299">299</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitFailWhenTSOIsDown() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="300" href="#300">300</a> 
-<a class="jxr_linenumber" name="301" href="#301">301</a>         OmidClientConfiguration testTSOClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="302" href="#302">302</a>         testTSOClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="303" href="#303">303</a>         testTSOClientConf.setRequestTimeoutInMs(100);
-<a class="jxr_linenumber" name="304" href="#304">304</a>         testTSOClientConf.setRequestMaxRetries(10);
-<a class="jxr_linenumber" name="305" href="#305">305</a>         TSOClient client = TSOClient.newInstance(testTSOClientConf);
-<a class="jxr_linenumber" name="306" href="#306">306</a> 
-<a class="jxr_linenumber" name="307" href="#307">307</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="308" href="#308">308</a>         pausableTSOracle.pause();
-<a class="jxr_linenumber" name="309" href="#309">309</a>         TSOFuture&lt;Long&gt; future = client.commit(ts1, testWriteSet);
-<a class="jxr_linenumber" name="310" href="#310">310</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="311" href="#311">311</a>             future.get();
-<a class="jxr_linenumber" name="312" href="#312">312</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
-<a class="jxr_linenumber" name="313" href="#313">313</a>             assertEquals(e.getCause().getClass(), ServiceUnavailableException.<strong class="jxr_keyword">class</strong>,
-<a class="jxr_linenumber" name="314" href="#314">314</a>                          <span class="jxr_string">"Should be a ServiceUnavailableExeption"</span>);
-<a class="jxr_linenumber" name="315" href="#315">315</a>         }
-<a class="jxr_linenumber" name="316" href="#316">316</a> 
-<a class="jxr_linenumber" name="317" href="#317">317</a>     }
+<a class="jxr_linenumber" name="281" href="#281">281</a>     }
+<a class="jxr_linenumber" name="282" href="#282">282</a> 
+<a class="jxr_linenumber" name="283" href="#283">283</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="284" href="#284">284</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitCanSucceedWithMultipleTimeouts() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="285" href="#285">285</a> 
+<a class="jxr_linenumber" name="286" href="#286">286</a>         OmidClientConfiguration testTSOClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="287" href="#287">287</a>         testTSOClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="288" href="#288">288</a>         testTSOClientConf.setRequestTimeoutInMs(100);
+<a class="jxr_linenumber" name="289" href="#289">289</a>         testTSOClientConf.setRequestMaxRetries(10000);
+<a class="jxr_linenumber" name="290" href="#290">290</a>         TSOClient client = TSOClient.newInstance(testTSOClientConf);
+<a class="jxr_linenumber" name="291" href="#291">291</a> 
+<a class="jxr_linenumber" name="292" href="#292">292</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="293" href="#293">293</a>         pausableTSOracle.pause();
+<a class="jxr_linenumber" name="294" href="#294">294</a>         TSOFuture&lt;Long&gt; future = client.commit(ts1, testWriteSet);
+<a class="jxr_linenumber" name="295" href="#295">295</a>         TimeUnit.SECONDS.sleep(1);
+<a class="jxr_linenumber" name="296" href="#296">296</a>         pausableTSOracle.resume();
+<a class="jxr_linenumber" name="297" href="#297">297</a>         future.get();
+<a class="jxr_linenumber" name="298" href="#298">298</a>     }
+<a class="jxr_linenumber" name="299" href="#299">299</a> 
+<a class="jxr_linenumber" name="300" href="#300">300</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="301" href="#301">301</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitFailWhenTSOIsDown() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="302" href="#302">302</a> 
+<a class="jxr_linenumber" name="303" href="#303">303</a>         OmidClientConfiguration testTSOClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="304" href="#304">304</a>         testTSOClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="305" href="#305">305</a>         testTSOClientConf.setRequestTimeoutInMs(100);
+<a class="jxr_linenumber" name="306" href="#306">306</a>         testTSOClientConf.setRequestMaxRetries(10);
+<a class="jxr_linenumber" name="307" href="#307">307</a>         TSOClient client = TSOClient.newInstance(testTSOClientConf);
+<a class="jxr_linenumber" name="308" href="#308">308</a> 
+<a class="jxr_linenumber" name="309" href="#309">309</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="310" href="#310">310</a>         pausableTSOracle.pause();
+<a class="jxr_linenumber" name="311" href="#311">311</a>         TSOFuture&lt;Long&gt; future = client.commit(ts1, testWriteSet);
+<a class="jxr_linenumber" name="312" href="#312">312</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="313" href="#313">313</a>             future.get();
+<a class="jxr_linenumber" name="314" href="#314">314</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="315" href="#315">315</a>             assertEquals(e.getCause().getClass(), ServiceUnavailableException.<strong class="jxr_keyword">class</strong>,
+<a class="jxr_linenumber" name="316" href="#316">316</a>                          <span class="jxr_string">"Should be a ServiceUnavailableExeption"</span>);
+<a class="jxr_linenumber" name="317" href="#317">317</a>         }
 <a class="jxr_linenumber" name="318" href="#318">318</a> 
-<a class="jxr_linenumber" name="319" href="#319">319</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="320" href="#320">320</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestampRequestSucceedWithMultipleTimeouts() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="321" href="#321">321</a> 
-<a class="jxr_linenumber" name="322" href="#322">322</a>         OmidClientConfiguration testTSOClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="323" href="#323">323</a>         testTSOClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="324" href="#324">324</a>         testTSOClientConf.setRequestTimeoutInMs(100);
-<a class="jxr_linenumber" name="325" href="#325">325</a>         testTSOClientConf.setRequestMaxRetries(10000);
-<a class="jxr_linenumber" name="326" href="#326">326</a>         TSOClient client = TSOClient.newInstance(testTSOClientConf);
-<a class="jxr_linenumber" name="327" href="#327">327</a> 
-<a class="jxr_linenumber" name="328" href="#328">328</a>         pausableTSOracle.pause();
-<a class="jxr_linenumber" name="329" href="#329">329</a>         Future&lt;Long&gt; future = client.getNewStartTimestamp();
-<a class="jxr_linenumber" name="330" href="#330">330</a>         TimeUnit.SECONDS.sleep(1);
-<a class="jxr_linenumber" name="331" href="#331">331</a>         pausableTSOracle.resume();
-<a class="jxr_linenumber" name="332" href="#332">332</a>         future.get();
-<a class="jxr_linenumber" name="333" href="#333">333</a> 
-<a class="jxr_linenumber" name="334" href="#334">334</a>     }
+<a class="jxr_linenumber" name="319" href="#319">319</a>     }
+<a class="jxr_linenumber" name="320" href="#320">320</a> 
+<a class="jxr_linenumber" name="321" href="#321">321</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="322" href="#322">322</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestampRequestSucceedWithMultipleTimeouts() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="323" href="#323">323</a> 
+<a class="jxr_linenumber" name="324" href="#324">324</a>         OmidClientConfiguration testTSOClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="325" href="#325">325</a>         testTSOClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="326" href="#326">326</a>         testTSOClientConf.setRequestTimeoutInMs(100);
+<a class="jxr_linenumber" name="327" href="#327">327</a>         testTSOClientConf.setRequestMaxRetries(10000);
+<a class="jxr_linenumber" name="328" href="#328">328</a>         TSOClient client = TSOClient.newInstance(testTSOClientConf);
+<a class="jxr_linenumber" name="329" href="#329">329</a> 
+<a class="jxr_linenumber" name="330" href="#330">330</a>         pausableTSOracle.pause();
+<a class="jxr_linenumber" name="331" href="#331">331</a>         Future&lt;Long&gt; future = client.getNewStartTimestamp();
+<a class="jxr_linenumber" name="332" href="#332">332</a>         TimeUnit.SECONDS.sleep(1);
+<a class="jxr_linenumber" name="333" href="#333">333</a>         pausableTSOracle.resume();
+<a class="jxr_linenumber" name="334" href="#334">334</a>         future.get();
 <a class="jxr_linenumber" name="335" href="#335">335</a> 
-<a class="jxr_linenumber" name="336" href="#336">336</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="337" href="#337">337</a>     <em class="jxr_comment">// The next 3 tests are similar to the ones in TestRetryProcessor but checking the result on the TSOClient side</em>
-<a class="jxr_linenumber" name="338" href="#338">338</a>     <em class="jxr_comment">// (They exercise the communication protocol) TODO Remove???</em>
-<a class="jxr_linenumber" name="339" href="#339">339</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="340" href="#340">340</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="341" href="#341">341</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitTimestampPresentInCommitTableReturnsCommit() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="342" href="#342">342</a> 
-<a class="jxr_linenumber" name="343" href="#343">343</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="344" href="#344">344</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="345" href="#345">345</a> 
-<a class="jxr_linenumber" name="346" href="#346">346</a>         <strong class="jxr_keyword">long</strong> tx1ST = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="336" href="#336">336</a>     }
+<a class="jxr_linenumber" name="337" href="#337">337</a> 
+<a class="jxr_linenumber" name="338" href="#338">338</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="339" href="#339">339</a>     <em class="jxr_comment">// The next 3 tests are similar to the ones in TestRetryProcessor but checking the result on the TSOClient side</em>
+<a class="jxr_linenumber" name="340" href="#340">340</a>     <em class="jxr_comment">// (They exercise the communication protocol) TODO Remove???</em>
+<a class="jxr_linenumber" name="341" href="#341">341</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="342" href="#342">342</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="343" href="#343">343</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitTimestampPresentInCommitTableReturnsCommit() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="344" href="#344">344</a> 
+<a class="jxr_linenumber" name="345" href="#345">345</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="346" href="#346">346</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
 <a class="jxr_linenumber" name="347" href="#347">347</a> 
-<a class="jxr_linenumber" name="348" href="#348">348</a>         clientOneShot.makeRequest(createRetryCommitRequest(tx1ST));
-<a class="jxr_linenumber" name="349" href="#349">349</a>         TSOProto.Response response = clientOneShot.makeRequest(createRetryCommitRequest(tx1ST));
-<a class="jxr_linenumber" name="350" href="#350">350</a>         assertFalse(response.getCommitResponse().getAborted(), <span class="jxr_string">"Transaction should be committed"</span>);
-<a class="jxr_linenumber" name="351" href="#351">351</a>         assertEquals(response.getCommitResponse().getCommitTimestamp(), tx1ST + 1);
-<a class="jxr_linenumber" name="352" href="#352">352</a>     }
-<a class="jxr_linenumber" name="353" href="#353">353</a> 
-<a class="jxr_linenumber" name="354" href="#354">354</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="355" href="#355">355</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testInvalidCommitTimestampPresentInCommitTableReturnsAbort() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="356" href="#356">356</a> 
-<a class="jxr_linenumber" name="357" href="#357">357</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="358" href="#358">358</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="359" href="#359">359</a> 
-<a class="jxr_linenumber" name="360" href="#360">360</a>         <strong class="jxr_keyword">long</strong> tx1ST = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="361" href="#361">361</a>         <em class="jxr_comment">// Invalidate the transaction</em>
-<a class="jxr_linenumber" name="362" href="#362">362</a>         commitTable.getClient().tryInvalidateTransaction(tx1ST);
-<a class="jxr_linenumber" name="363" href="#363">363</a> 
-<a class="jxr_linenumber" name="364" href="#364">364</a>         clientOneShot.makeRequest(createRetryCommitRequest(tx1ST));
-<a class="jxr_linenumber" name="365" href="#365">365</a>         TSOProto.Response response = clientOneShot.makeRequest(createRetryCommitRequest(tx1ST));
-<a class="jxr_linenumber" name="366" href="#366">366</a>         assertTrue(response.getCommitResponse().getAborted(), <span class="jxr_string">"Transaction should be aborted"</span>);
-<a class="jxr_linenumber" name="367" href="#367">367</a>         assertEquals(response.getCommitResponse().getCommitTimestamp(), 0);
-<a class="jxr_linenumber" name="368" href="#368">368</a>     }
-<a class="jxr_linenumber" name="369" href="#369">369</a> 
-<a class="jxr_linenumber" name="370" href="#370">370</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="371" href="#371">371</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitTimestampNotPresentInCommitTableReturnsAnAbort() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="372" href="#372">372</a> 
-<a class="jxr_linenumber" name="373" href="#373">373</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="374" href="#374">374</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="375" href="#375">375</a> 
-<a class="jxr_linenumber" name="376" href="#376">376</a>         <strong class="jxr_keyword">long</strong> tx1ST = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="348" href="#348">348</a>         <strong class="jxr_keyword">long</strong> tx1ST = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="349" href="#349">349</a> 
+<a class="jxr_linenumber" name="350" href="#350">350</a>         clientOneShot.makeRequest(createRetryCommitRequest(tx1ST));
+<a class="jxr_linenumber" name="351" href="#351">351</a>         TSOProto.Response response = clientOneShot.makeRequest(createRetryCommitRequest(tx1ST));
+<a class="jxr_linenumber" name="352" href="#352">352</a>         assertFalse(response.getCommitResponse().getAborted(), <span class="jxr_string">"Transaction should be committed"</span>);
+<a class="jxr_linenumber" name="353" href="#353">353</a>         assertEquals(response.getCommitResponse().getCommitTimestamp(), tx1ST + AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN);
+<a class="jxr_linenumber" name="354" href="#354">354</a>     }
+<a class="jxr_linenumber" name="355" href="#355">355</a> 
+<a class="jxr_linenumber" name="356" href="#356">356</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="357" href="#357">357</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testInvalidCommitTimestampPresentInCommitTableReturnsAbort() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="358" href="#358">358</a> 
+<a class="jxr_linenumber" name="359" href="#359">359</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="360" href="#360">360</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a>(TSO_SERVER_HOST, TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="361" href="#361">361</a> 
+<a class="jxr_linenumber" name="362" href="#362">362</a>         <strong class="jxr_keyword">long</strong> tx1ST = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="363" href="#363">363</a>         <em class="jxr_comment">// Invalidate the transaction</em>
+<a class="jxr_linenumber" name="364" href="#364">364</a>         commitTable.getClient().tryInvalidateTransaction(tx1ST);
+<a class="jxr_linenumber" name="365" href="#365">365</a> 
+<a class="jxr_linenumber" name="366" href="#366">366</a>         clientOneShot.makeRequest(createRetryCommitRequest(tx1ST));
+<a class="jxr_linenumber" name="367" href="#367">367</a>         TSOProto.Response response = clientOneShot.makeRequest(createRetryCommitRequest(tx1ST));
+<a class="jxr_linenumber" name="368" href="#368">368</a>         assertTrue(response.getCommitResponse().getAborted(), <span class="jxr_string">"Transaction should be aborted"</span>);
+<a class="jxr_linenumber" name="369" href="#369">369</a>         assertEquals(response.getCommitResponse().getCommitTimestamp(), 0);
+<a class="jxr_linenumber" name="370" href="#370">370</a>     }
+<a class="jxr_linenumber" name="371" href="#371">371</a> 
+<a class="jxr_linenumber" name="372" href="#372">372</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="373" href="#373">373</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitTimestampNotPresentInCommitTableReturnsAnAbort() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="374" href="#374">374</a> 
+<a class="jxr_linenumber" name="375" href="#375">375</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="376" href="#376">376</a>         <a href="../../../../../org/apache/omid/tso/client/TSOClientOneShot.html">TSOClientOneShot</a> clientOneShot = <strong class="jxr

<TRUNCATED>


[51/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
[wagon-git] commit to branch asf-site 9/20/18 10:47 AM


Project: http://git-wip-us.apache.org/repos/asf/incubator-omid-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-omid-site/commit/6826ad03
Tree: http://git-wip-us.apache.org/repos/asf/incubator-omid-site/tree/6826ad03
Diff: http://git-wip-us.apache.org/repos/asf/incubator-omid-site/diff/6826ad03

Branch: refs/heads/asf-site
Commit: 6826ad03b11143664b95924b218173878b15dd77
Parents: 167e8b7
Author: Ohad Shacham <oh...@yahoo-inc.com>
Authored: Thu Sep 20 10:47:39 2018 +0300
Committer: Ohad Shacham <oh...@yahoo-inc.com>
Committed: Thu Sep 20 10:47:39 2018 +0300

----------------------------------------------------------------------
 basic-algorithm.html                            |   22 +-
 basic-concepts.html                             |   22 +-
 basic-examples.html                             |   22 +-
 checkstyle-aggregate.html                       | 5746 ++++++++++++------
 checkstyle.rss                                  |  266 +-
 client-failure-management.html                  |   22 +-
 coding-guide-and-style.html                     |   22 +-
 cpd.html                                        |   20 +-
 dependency-convergence.html                     | 1215 ++--
 dependency-info.html                            |   22 +-
 dependency-management.html                      |   16 +-
 distribution-management.html                    |    8 +-
 index.html                                      |   22 +-
 license.html                                    |    8 +-
 mailing-lists.html                              |   22 +-
 modules.html                                    |    8 +-
 omid-components.html                            |   22 +-
 plugin-management.html                          |    8 +-
 plugins.html                                    |   14 +-
 pmd.html                                        |  259 +-
 project-info.html                               |    8 +-
 project-reports.html                            |    8 +-
 project-summary.html                            |   10 +-
 quickstart.html                                 |   28 +-
 source-repository.html                          |    8 +-
 team-list.html                                  |    8 +-
 xref-test/allclasses-frame.html                 |   23 +-
 xref-test/index.html                            |    2 +-
 .../committable/hbase/TestHBaseCommitTable.html |  549 +-
 .../omid/committable/hbase/package-frame.html   |    2 +-
 .../omid/committable/hbase/package-summary.html |    2 +-
 .../apache/omid/committable/package-frame.html  |    2 +-
 .../omid/committable/package-summary.html       |    2 +-
 xref-test/org/apache/omid/package-frame.html    |    8 +-
 xref-test/org/apache/omid/package-summary.html  |   12 +-
 .../storage/TestHBaseTimestampStorage.html      |   14 +-
 .../omid/timestamp/storage/package-frame.html   |    2 +-
 .../omid/timestamp/storage/package-summary.html |    2 +-
 .../omid/tools/hbase/TestOmidTableManager.html  |    2 +-
 .../apache/omid/tools/hbase/package-frame.html  |    2 +-
 .../omid/tools/hbase/package-summary.html       |    2 +-
 .../apache/omid/transaction/OmidTestBase.html   |  472 +-
 .../TSOForHBaseCompactorTestModule.html         |   91 +-
 .../TSOForSnapshotFilterTestModule.html         |  148 +
 .../TestAsynchronousPostCommitter.html          |   98 +-
 .../apache/omid/transaction/TestAutoFlush.html  |   20 +-
 .../TestBaillisAnomaliesWithTXs.html            |   86 +-
 .../omid/transaction/TestBasicTransaction.html  |  113 +-
 .../apache/omid/transaction/TestCellUtils.html  |  393 +-
 .../apache/omid/transaction/TestCheckpoint.html |  372 ++
 .../omid/transaction/TestColumnIterator.html    |    8 +-
 .../apache/omid/transaction/TestCompaction.html | 2355 +++----
 .../omid/transaction/TestCompactorScanner.html  |  161 +-
 .../apache/omid/transaction/TestDeletion.html   |  637 +-
 .../TestEndToEndScenariosWithHA.html            |  777 +--
 .../apache/omid/transaction/TestFilters.html    |  353 +-
 .../transaction/TestHBaseTransactionClient.html |  780 ++-
 .../TestHBaseTransactionManager.html            |   44 +-
 .../transaction/TestMarkPutAsCommitted.html     |  137 +
 .../omid/transaction/TestMultiplePut.html       |  217 +-
 .../apache/omid/transaction/TestReadPath.html   |   42 +-
 .../omid/transaction/TestShadowCells.html       |  975 +--
 .../transaction/TestSingleColumnFamily.html     |   30 +-
 .../omid/transaction/TestSnapshotFilter.html    |  894 +++
 .../omid/transaction/TestTTableBehaviour.html   |  269 +-
 .../transaction/TestTransactionCleanup.html     |  199 +-
 .../transaction/TestTransactionConflict.html    |  764 ++-
 .../omid/transaction/TestTxMgrFailover.html     |  165 +-
 .../apache/omid/transaction/TestUpdateScan.html |   56 +-
 .../apache/omid/transaction/package-frame.html  |   14 +-
 .../omid/transaction/package-summary.html       |   22 +-
 .../org/apache/omid/tso/TSOMockModule.html      |  121 +-
 .../org/apache/omid/tso/TestLeaseManager.html   |  791 +--
 .../tso/TestPersistenceProcessorHandler.html    |  696 +--
 .../apache/omid/tso/TestRequestProcessor.html   |  334 +-
 .../omid/tso/TestTSOChannelHandlerNetty.html    |  158 +-
 .../apache/omid/tso/TestTimestampOracle.html    |  179 +-
 .../apache/omid/tso/TestWorldTimeOracle.html    |  133 +
 ...tionOfTSOClientServerBasicFunctionality.html |  430 +-
 .../omid/tso/client/TestMockTSOClient.html      |  100 +-
 .../client/TestTSOClientConnectionToTSO.html    |  498 +-
 ...stTSOClientRequestAndResponseBehaviours.html |  724 +--
 .../TestTSOClientRowAndCellLevelConflict.html   |  217 +
 .../apache/omid/tso/client/package-frame.html   |    5 +-
 .../apache/omid/tso/client/package-summary.html |    7 +-
 .../org/apache/omid/tso/package-frame.html      |    8 +-
 .../org/apache/omid/tso/package-summary.html    |   12 +-
 .../org/apache/statemachine/package-frame.html  |    2 +-
 .../apache/statemachine/package-summary.html    |    2 +-
 xref-test/overview-frame.html                   |    2 +-
 xref-test/overview-summary.html                 |    4 +-
 xref/allclasses-frame.html                      |   64 +-
 xref/index.html                                 |    2 +-
 .../hbase/coprocessor/BaseRegionObserver.html   |   61 +
 .../hadoop/hbase/coprocessor/package-frame.html |   24 +
 .../hbase/coprocessor/package-summary.html      |   67 +
 .../hbase/regionserver/CompactorScanner.html    |    8 +-
 .../hadoop/hbase/regionserver/Region.html       |   59 +-
 .../hbase/regionserver/RegionAccessWrapper.html |   80 +
 .../hbase/regionserver/package-frame.html       |    7 +-
 .../hbase/regionserver/package-summary.html     |    9 +-
 xref/org/apache/omid/HBaseShims.html            |  103 +-
 xref/org/apache/omid/NetworkUtils.html          |   62 +-
 xref/org/apache/omid/OmidFilterBase.html        |   35 +
 xref/org/apache/omid/YAMLUtils.html             |  105 +-
 .../omid/benchmarks/hbase/package-frame.html    |    2 +-
 .../omid/benchmarks/hbase/package-summary.html  |    2 +-
 .../omid/benchmarks/tso/package-frame.html      |    2 +-
 .../omid/benchmarks/tso/package-summary.html    |    2 +-
 .../omid/benchmarks/utils/package-frame.html    |    2 +-
 .../omid/benchmarks/utils/package-summary.html  |    2 +-
 .../committable/hbase/HBaseCommitTable.html     |  772 +--
 .../omid/committable/hbase/package-frame.html   |    2 +-
 .../omid/committable/hbase/package-summary.html |    2 +-
 .../apache/omid/committable/package-frame.html  |    2 +-
 .../omid/committable/package-summary.html       |    2 +-
 xref/org/apache/omid/examples/BasicExample.html |  181 +-
 .../omid/examples/ConfigurationExample.html     |  205 +-
 .../omid/examples/SnapshotIsolationExample.html |  393 +-
 .../org/apache/omid/examples/package-frame.html |    2 +-
 .../apache/omid/examples/package-summary.html   |    2 +-
 xref/org/apache/omid/metrics/package-frame.html |    2 +-
 .../apache/omid/metrics/package-summary.html    |    2 +-
 xref/org/apache/omid/package-frame.html         |    7 +-
 xref/org/apache/omid/package-summary.html       |    9 +-
 .../storage/HBaseTimestampStorage.html          |  139 +-
 .../omid/timestamp/storage/package-frame.html   |    2 +-
 .../omid/timestamp/storage/package-summary.html |    2 +-
 .../org/apache/omid/tools/hbase/HBaseLogin.html |   47 +-
 .../omid/tools/hbase/OmidTableManager.html      |  358 +-
 .../apache/omid/tools/hbase/package-frame.html  |    2 +-
 .../omid/tools/hbase/package-summary.html       |    2 +-
 .../omid/transaction/AbstractTransaction.html   |  543 +-
 .../transaction/AbstractTransactionManager.html |  901 ++-
 .../transaction/AttributeSetSnapshotFilter.html |   99 +
 .../apache/omid/transaction/CellSkipFilter.html |  151 +
 .../omid/transaction/CellSkipFilterBase.html    |  150 +
 xref/org/apache/omid/transaction/CellUtils.html |  782 +--
 .../apache/omid/transaction/CompactorUtil.html  |  149 +-
 .../apache/omid/transaction/HBaseCellId.html    |  140 +-
 .../HBaseOmidClientConfiguration.html           |  319 +-
 .../transaction/HBaseSyncPostCommitter.html     |  207 +-
 .../omid/transaction/HBaseTransaction.html      |  133 +-
 .../transaction/HBaseTransactionClient.html     |    6 +-
 .../transaction/HBaseTransactionManager.html    |  509 +-
 .../omid/transaction/HTableAccessWrapper.html   |   77 +
 .../apache/omid/transaction/OmidCompactor.html  |  254 +-
 .../omid/transaction/OmidSnapshotFilter.html    |  239 +
 .../apache/omid/transaction/SnapshotFilter.html |   64 +
 .../omid/transaction/SnapshotFilterImpl.html    |  712 +++
 xref/org/apache/omid/transaction/TTable.html    | 1457 ++---
 .../omid/transaction/TableAccessWrapper.html    |   52 +
 .../apache/omid/transaction/Transaction.html    |   55 +-
 .../omid/transaction/TransactionFilters.html    |   45 +
 .../omid/transaction/TransactionManager.html    |   13 +-
 .../TransactionVisibilityFilter.html            |  259 +
 .../TransactionVisibilityFilterBase.html        |  253 +
 .../apache/omid/transaction/package-frame.html  |   39 +-
 .../omid/transaction/package-summary.html       |   61 +-
 xref/org/apache/omid/tso/Batch.html             |   88 +-
 xref/org/apache/omid/tso/BatchPoolModule.html   |   38 +-
 xref/org/apache/omid/tso/CacheEvaluation.html   |    2 +-
 xref/org/apache/omid/tso/PersistEvent.html      |   66 +-
 .../apache/omid/tso/PersistenceProcessor.html   |    8 +-
 .../omid/tso/PersistenceProcessorHandler.html   |  350 +-
 .../omid/tso/PersistenceProcessorImpl.html      |  154 +-
 xref/org/apache/omid/tso/ReplyProcessor.html    |   17 +-
 .../org/apache/omid/tso/ReplyProcessorImpl.html |  393 +-
 xref/org/apache/omid/tso/RequestProcessor.html  |    5 +-
 .../apache/omid/tso/RequestProcessorImpl.html   |  711 ++-
 xref/org/apache/omid/tso/TSOChannelHandler.html |  210 +-
 xref/org/apache/omid/tso/TSOModule.html         |  101 +-
 xref/org/apache/omid/tso/TSOServer.html         |    2 +-
 xref/org/apache/omid/tso/TSOServerConfig.html   |  275 +-
 .../apache/omid/tso/TimestampOracleImpl.html    |  280 +-
 .../apache/omid/tso/WorldClockOracleImpl.html   |  199 +
 xref/org/apache/omid/tso/client/CellId.html     |    5 +-
 .../apache/omid/tso/client/MockTSOClient.html   |  224 +-
 .../tso/client/OmidClientConfiguration.html     |  290 +-
 xref/org/apache/omid/tso/client/TSOClient.html  | 1873 +++---
 .../org/apache/omid/tso/client/TSOProtocol.html |  111 +-
 .../apache/omid/tso/client/package-frame.html   |    8 +-
 .../apache/omid/tso/client/package-summary.html |   12 +-
 xref/org/apache/omid/tso/package-frame.html     |    8 +-
 xref/org/apache/omid/tso/package-summary.html   |   12 +-
 .../apache/omid/tso/util/DummyCellIdImpl.html   |   37 +-
 .../org/apache/omid/tso/util/package-frame.html |    2 +-
 .../apache/omid/tso/util/package-summary.html   |    2 +-
 xref/org/apache/omid/zk/package-frame.html      |    2 +-
 xref/org/apache/omid/zk/package-summary.html    |    2 +-
 xref/org/apache/statemachine/package-frame.html |    2 +-
 .../apache/statemachine/package-summary.html    |    2 +-
 xref/overview-frame.html                        |    5 +-
 xref/overview-summary.html                      |    9 +-
 194 files changed, 23891 insertions(+), 15693 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/basic-algorithm.html
----------------------------------------------------------------------
diff --git a/basic-algorithm.html b/basic-algorithm.html
index cb36d38..d9ae5cd 100644
--- a/basic-algorithm.html
+++ b/basic-algorithm.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Basic Transaction Algorithm</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>Basic Transaction Algorithm</h1>
+            <h1>Basic Transaction Algorithm</h1>
 <p>A simplified version of the algorithm for performing transactional operations in a non-faulty scenario is depicted in the following figure:</p>
 <p><img src="images/basic-alg.png" alt="Basic algorithm for managing transactions" /></p>
 <p>Initially, a user application (not shown in the figure for the sake of simplicity) starts a new transaction using the Transactional Client API, which in turn acquires a start timestamp from the TSO.</p>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/basic-concepts.html
----------------------------------------------------------------------
diff --git a/basic-concepts.html b/basic-concepts.html
index b5bef1b..43fcbaf 100644
--- a/basic-concepts.html
+++ b/basic-concepts.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Basic Concepts</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>Basic Concepts</h1>
+            <h1>Basic Concepts</h1>
 <p>Omid started as a research project in 2011 at Yahoo Labs, with the aim of adding transactions to HBase. While Omid was designed with HBase in mind, we have been careful to not bind ourselves to a particular big datastore. As a consequence, Omid can be potentially adapted to be used with any other multiversioned key-value datastore with some additional extensions.</p>
 <p>In the next sections, we introduce two basic concepts that have driven Omid&#x2019;s design.</p>
 <div class="section">

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/basic-examples.html
----------------------------------------------------------------------
diff --git a/basic-examples.html b/basic-examples.html
index ee392ee..d7a17d1 100644
--- a/basic-examples.html
+++ b/basic-examples.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Code Examples</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>Code Examples</h1>
+            <h1>Code Examples</h1>
 <p>This section guides the developer of Omid-based transactional applications over the different steps required to execute multi-row transactions on HBase and the different APIs involved in the process.</p>
 <div class="section">
 <h2><a name="Transactional_Contexts_and_Operations_with_Omid"></a>Transactional Contexts and Operations with Omid</h2>


[23/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/client/TestTSOClientConnectionToTSO.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/client/TestTSOClientConnectionToTSO.html b/xref-test/org/apache/omid/tso/client/TestTSOClientConnectionToTSO.html
index 38de9f0..3f20abd 100644
--- a/xref-test/org/apache/omid/tso/client/TestTSOClientConnectionToTSO.html
+++ b/xref-test/org/apache/omid/tso/client/TestTSOClientConnectionToTSO.html
@@ -29,269 +29,271 @@
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.CuratorFramework;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.test.TestingServer;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.utils.CloseableUtils;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.HALeaseManagementModule;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.VoidLeaseManagementModule;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.statemachine.StateMachine.FsmImpl;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.KeeperException.NoNodeException;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.data.Stat;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.CuratorFramework;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.test.TestingServer;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.utils.CloseableUtils;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.AbstractTransactionManager;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.HALeaseManagementModule;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.VoidLeaseManagementModule;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.statemachine.StateMachine.FsmImpl;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.KeeperException.NoNodeException;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.data.Stat;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNotNull;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestTSOClientConnectionToTSO.html">TestTSOClientConnectionToTSO</a> {
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNotNull;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
 <a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTSOClientConnectionToTSO.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestTSOClientConnectionToTSO.html">TestTSOClientConnectionToTSO</a> {
 <a class="jxr_linenumber" name="51" href="#51">51</a>  
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <em class="jxr_comment">// Constants and variables for component connectivity</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_HOST = <span class="jxr_string">"localhost"</span>;
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CURRENT_TSO_PATH = <span class="jxr_string">"/current_tso_path"</span>;
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_LEASE_PATH = <span class="jxr_string">"/tso_lease_path"</span>;
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> tsoPortForTest;
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> String zkClusterForTest;
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> Injector injector = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTSOClientConnectionToTSO.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="53" href="#53">53</a>  
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <em class="jxr_comment">// Constants and variables for component connectivity</em>
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_HOST = <span class="jxr_string">"localhost"</span>;
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CURRENT_TSO_PATH = <span class="jxr_string">"/current_tso_path"</span>;
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_LEASE_PATH = <span class="jxr_string">"/tso_lease_path"</span>;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> tsoPortForTest;
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> String zkClusterForTest;
 <a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> TestingServer zkServer;
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> Injector injector = <strong class="jxr_keyword">null</strong>;
 <a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> CuratorFramework zkClient;
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> TSOServer tsoServer;
-<a class="jxr_linenumber" name="66" href="#66">66</a>  
-<a class="jxr_linenumber" name="67" href="#67">67</a>      @BeforeMethod
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeMethod() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>          tsoPortForTest = TestUtils.getFreeLocalPort();
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> TestingServer zkServer;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> CuratorFramework zkClient;
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> TSOServer tsoServer;
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>      @BeforeMethod
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeMethod() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">int</strong> zkPortForTest = TestUtils.getFreeLocalPort();
-<a class="jxr_linenumber" name="73" href="#73">73</a>          zkClusterForTest = TSO_HOST + <span class="jxr_string">":"</span> + zkPortForTest;
-<a class="jxr_linenumber" name="74" href="#74">74</a>          LOG.info(<span class="jxr_string">"Starting ZK Server in port {}"</span>, zkPortForTest);
-<a class="jxr_linenumber" name="75" href="#75">75</a>          zkServer = TestUtils.provideTestingZKServer(zkPortForTest);
-<a class="jxr_linenumber" name="76" href="#76">76</a>          LOG.info(<span class="jxr_string">"ZK Server Started @ {}"</span>, zkServer.getConnectString());
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>          zkClient = TestUtils.provideConnectedZKClient(zkClusterForTest);
+<a class="jxr_linenumber" name="72" href="#72">72</a>          tsoPortForTest = TestUtils.getFreeLocalPort();
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">int</strong> zkPortForTest = TestUtils.getFreeLocalPort();
+<a class="jxr_linenumber" name="75" href="#75">75</a>          zkClusterForTest = TSO_HOST + <span class="jxr_string">":"</span> + zkPortForTest;
+<a class="jxr_linenumber" name="76" href="#76">76</a>          LOG.info(<span class="jxr_string">"Starting ZK Server in port {}"</span>, zkPortForTest);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          zkServer = TestUtils.provideTestingZKServer(zkPortForTest);
+<a class="jxr_linenumber" name="78" href="#78">78</a>          LOG.info(<span class="jxr_string">"ZK Server Started @ {}"</span>, zkServer.getConnectString());
 <a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          Stat stat;
-<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="82" href="#82">82</a>              zkClient.delete().forPath(CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="83" href="#83">83</a>              stat = zkClient.checkExists().forPath(CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="84" href="#84">84</a>              assertNull(stat, CURRENT_TSO_PATH + <span class="jxr_string">" should not exist"</span>);
-<a class="jxr_linenumber" name="85" href="#85">85</a>          } <strong class="jxr_keyword">catch</strong> (NoNodeException e) {
-<a class="jxr_linenumber" name="86" href="#86">86</a>              LOG.info(<span class="jxr_string">"{} ZNode did not exist"</span>, CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="87" href="#87">87</a>          }
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>      }
+<a class="jxr_linenumber" name="80" href="#80">80</a>          zkClient = TestUtils.provideConnectedZKClient(zkClusterForTest);
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>          Stat stat;
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="84" href="#84">84</a>              zkClient.delete().forPath(CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="85" href="#85">85</a>              stat = zkClient.checkExists().forPath(CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="86" href="#86">86</a>              assertNull(stat, CURRENT_TSO_PATH + <span class="jxr_string">" should not exist"</span>);
+<a class="jxr_linenumber" name="87" href="#87">87</a>          } <strong class="jxr_keyword">catch</strong> (NoNodeException e) {
+<a class="jxr_linenumber" name="88" href="#88">88</a>              LOG.info(<span class="jxr_string">"{} ZNode did not exist"</span>, CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="89" href="#89">89</a>          }
 <a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>      @AfterMethod
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterMethod() {
-<a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>          zkClient.close();
+<a class="jxr_linenumber" name="91" href="#91">91</a>      }
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>      @AfterMethod
+<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterMethod() {
 <a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          CloseableUtils.closeQuietly(zkServer);
-<a class="jxr_linenumber" name="97" href="#97">97</a>          zkServer = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="98" href="#98">98</a>          LOG.info(<span class="jxr_string">"ZK Server Stopped"</span>);
-<a class="jxr_linenumber" name="99" href="#99">99</a>  
-<a class="jxr_linenumber" name="100" href="#100">100</a>     }
+<a class="jxr_linenumber" name="96" href="#96">96</a>          zkClient.close();
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>          CloseableUtils.closeQuietly(zkServer);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          zkServer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="100" href="#100">100</a>         LOG.info(<span class="jxr_string">"ZK Server Stopped"</span>);
 <a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUnsuccessfulConnectionToTSO() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="104" href="#104">104</a> 
-<a class="jxr_linenumber" name="105" href="#105">105</a>         <em class="jxr_comment">// When no HA node for TSOServer is found &amp; no host:port config exists</em>
-<a class="jxr_linenumber" name="106" href="#106">106</a>         <em class="jxr_comment">// we should get an exception when getting the client</em>
-<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="108" href="#108">108</a>             TSOClient.newInstance(<strong class="jxr_keyword">new</strong> OmidClientConfiguration());
-<a class="jxr_linenumber" name="109" href="#109">109</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="110" href="#110">110</a>             <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="111" href="#111">111</a>         }
-<a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a>     }
+<a class="jxr_linenumber" name="102" href="#102">102</a>     }
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUnsuccessfulConnectionToTSO() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="106" href="#106">106</a> 
+<a class="jxr_linenumber" name="107" href="#107">107</a>         <em class="jxr_comment">// When no HA node for TSOServer is found &amp; no host:port config exists</em>
+<a class="jxr_linenumber" name="108" href="#108">108</a>         <em class="jxr_comment">// we should get an exception when getting the client</em>
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="110" href="#110">110</a>             TSOClient.newInstance(<strong class="jxr_keyword">new</strong> OmidClientConfiguration());
+<a class="jxr_linenumber" name="111" href="#111">111</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="112" href="#112">112</a>             <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="113" href="#113">113</a>         }
 <a class="jxr_linenumber" name="114" href="#114">114</a> 
-<a class="jxr_linenumber" name="115" href="#115">115</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSuccessfulConnectionToTSOWithHostAndPort() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="117" href="#117">117</a> 
-<a class="jxr_linenumber" name="118" href="#118">118</a>         <em class="jxr_comment">// Launch a TSO WITHOUT publishing the address in HA...</em>
-<a class="jxr_linenumber" name="119" href="#119">119</a>         TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="120" href="#120">120</a>         tsoConfig.setConflictMapSize(1000);
-<a class="jxr_linenumber" name="121" href="#121">121</a>         tsoConfig.setPort(tsoPortForTest);
-<a class="jxr_linenumber" name="122" href="#122">122</a>         tsoConfig.setLeaseModule(<strong class="jxr_keyword">new</strong> VoidLeaseManagementModule());
-<a class="jxr_linenumber" name="123" href="#123">123</a>         injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig));
-<a class="jxr_linenumber" name="124" href="#124">124</a>         LOG.info(<span class="jxr_string">"Starting TSO"</span>);
-<a class="jxr_linenumber" name="125" href="#125">125</a>         tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="126" href="#126">126</a>         tsoServer.startAndWait();
-<a class="jxr_linenumber" name="127" href="#127">127</a>         TestUtils.waitForSocketListening(TSO_HOST, tsoPortForTest, 100);
-<a class="jxr_linenumber" name="128" href="#128">128</a>         LOG.info(<span class="jxr_string">"Finished loading TSO"</span>);
-<a class="jxr_linenumber" name="129" href="#129">129</a> 
-<a class="jxr_linenumber" name="130" href="#130">130</a>         <em class="jxr_comment">// When no HA node for TSOServer is found we should get a connection</em>
-<a class="jxr_linenumber" name="131" href="#131">131</a>         <em class="jxr_comment">// to the TSO through the host:port configured...</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a>         OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="133" href="#133">133</a>         tsoClientConf.setConnectionString(<span class="jxr_string">"localhost:"</span> + tsoPortForTest);
-<a class="jxr_linenumber" name="134" href="#134">134</a>         tsoClientConf.setZkCurrentTsoPath(CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="135" href="#135">135</a>         TSOClient tsoClient = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="136" href="#136">136</a> 
-<a class="jxr_linenumber" name="137" href="#137">137</a>         <em class="jxr_comment">// ... so we should get responses from the methods</em>
-<a class="jxr_linenumber" name="138" href="#138">138</a>         Long startTS = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="139" href="#139">139</a>         LOG.info(<span class="jxr_string">"Start TS {} "</span>, startTS);
-<a class="jxr_linenumber" name="140" href="#140">140</a>         assertEquals(startTS.longValue(), 1);
-<a class="jxr_linenumber" name="141" href="#141">141</a> 
-<a class="jxr_linenumber" name="142" href="#142">142</a>         <em class="jxr_comment">// Close the tsoClient connection and stop the TSO Server</em>
-<a class="jxr_linenumber" name="143" href="#143">143</a>         tsoClient.close().get();
-<a class="jxr_linenumber" name="144" href="#144">144</a>         tsoServer.stopAndWait();
-<a class="jxr_linenumber" name="145" href="#145">145</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="146" href="#146">146</a>         TestUtils.waitForSocketNotListening(TSO_HOST, tsoPortForTest, 1000);
-<a class="jxr_linenumber" name="147" href="#147">147</a>         LOG.info(<span class="jxr_string">"TSO Server Stopped"</span>);
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>     }
+<a class="jxr_linenumber" name="115" href="#115">115</a>     }
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSuccessfulConnectionToTSOWithHostAndPort() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>         <em class="jxr_comment">// Launch a TSO WITHOUT publishing the address in HA...</em>
+<a class="jxr_linenumber" name="121" href="#121">121</a>         TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="122" href="#122">122</a>         tsoConfig.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="123" href="#123">123</a>         tsoConfig.setPort(tsoPortForTest);
+<a class="jxr_linenumber" name="124" href="#124">124</a>         tsoConfig.setLeaseModule(<strong class="jxr_keyword">new</strong> VoidLeaseManagementModule());
+<a class="jxr_linenumber" name="125" href="#125">125</a>         injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig));
+<a class="jxr_linenumber" name="126" href="#126">126</a>         LOG.info(<span class="jxr_string">"Starting TSO"</span>);
+<a class="jxr_linenumber" name="127" href="#127">127</a>         tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="128" href="#128">128</a>         tsoServer.startAndWait();
+<a class="jxr_linenumber" name="129" href="#129">129</a>         TestUtils.waitForSocketListening(TSO_HOST, tsoPortForTest, 100);
+<a class="jxr_linenumber" name="130" href="#130">130</a>         LOG.info(<span class="jxr_string">"Finished loading TSO"</span>);
+<a class="jxr_linenumber" name="131" href="#131">131</a> 
+<a class="jxr_linenumber" name="132" href="#132">132</a>         <em class="jxr_comment">// When no HA node for TSOServer is found we should get a connection</em>
+<a class="jxr_linenumber" name="133" href="#133">133</a>         <em class="jxr_comment">// to the TSO through the host:port configured...</em>
+<a class="jxr_linenumber" name="134" href="#134">134</a>         OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="135" href="#135">135</a>         tsoClientConf.setConnectionString(<span class="jxr_string">"localhost:"</span> + tsoPortForTest);
+<a class="jxr_linenumber" name="136" href="#136">136</a>         tsoClientConf.setZkCurrentTsoPath(CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="137" href="#137">137</a>         TSOClient tsoClient = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="138" href="#138">138</a> 
+<a class="jxr_linenumber" name="139" href="#139">139</a>         <em class="jxr_comment">// ... so we should get responses from the methods</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a>         Long startTS = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="141" href="#141">141</a>         LOG.info(<span class="jxr_string">"Start TS {} "</span>, startTS);
+<a class="jxr_linenumber" name="142" href="#142">142</a>         assertEquals(startTS.longValue(), AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN);
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>         <em class="jxr_comment">// Close the tsoClient connection and stop the TSO Server</em>
+<a class="jxr_linenumber" name="145" href="#145">145</a>         tsoClient.close().get();
+<a class="jxr_linenumber" name="146" href="#146">146</a>         tsoServer.stopAndWait();
+<a class="jxr_linenumber" name="147" href="#147">147</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="148" href="#148">148</a>         TestUtils.waitForSocketNotListening(TSO_HOST, tsoPortForTest, 1000);
+<a class="jxr_linenumber" name="149" href="#149">149</a>         LOG.info(<span class="jxr_string">"TSO Server Stopped"</span>);
 <a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="152" href="#152">152</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSuccessfulConnectionToTSOThroughZK() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="153" href="#153">153</a> 
-<a class="jxr_linenumber" name="154" href="#154">154</a>         <em class="jxr_comment">// Launch a TSO publishing the address in HA...</em>
-<a class="jxr_linenumber" name="155" href="#155">155</a>         TSOServerConfig config = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="156" href="#156">156</a>         config.setConflictMapSize(1000);
-<a class="jxr_linenumber" name="157" href="#157">157</a>         config.setPort(tsoPortForTest);
-<a class="jxr_linenumber" name="158" href="#158">158</a>         config.setLeaseModule(<strong class="jxr_keyword">new</strong> HALeaseManagementModule(1000, TSO_LEASE_PATH, CURRENT_TSO_PATH, zkClusterForTest, <span class="jxr_string">"omid"</span>));
-<a class="jxr_linenumber" name="159" href="#159">159</a>         injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(config));
-<a class="jxr_linenumber" name="160" href="#160">160</a>         LOG.info(<span class="jxr_string">"Starting TSO"</span>);
-<a class="jxr_linenumber" name="161" href="#161">161</a>         tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="162" href="#162">162</a>         tsoServer.startAndWait();
-<a class="jxr_linenumber" name="163" href="#163">163</a>         TestUtils.waitForSocketListening(TSO_HOST, tsoPortForTest, 100);
-<a class="jxr_linenumber" name="164" href="#164">164</a>         LOG.info(<span class="jxr_string">"Finished loading TSO"</span>);
-<a class="jxr_linenumber" name="165" href="#165">165</a> 
-<a class="jxr_linenumber" name="166" href="#166">166</a>         waitTillTsoRegisters(injector.getInstance(CuratorFramework.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="151" href="#151">151</a>     }
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="154" href="#154">154</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSuccessfulConnectionToTSOThroughZK() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="155" href="#155">155</a> 
+<a class="jxr_linenumber" name="156" href="#156">156</a>         <em class="jxr_comment">// Launch a TSO publishing the address in HA...</em>
+<a class="jxr_linenumber" name="157" href="#157">157</a>         TSOServerConfig config = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="158" href="#158">158</a>         config.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="159" href="#159">159</a>         config.setPort(tsoPortForTest);
+<a class="jxr_linenumber" name="160" href="#160">160</a>         config.setLeaseModule(<strong class="jxr_keyword">new</strong> HALeaseManagementModule(1000, TSO_LEASE_PATH, CURRENT_TSO_PATH, zkClusterForTest, <span class="jxr_string">"omid"</span>));
+<a class="jxr_linenumber" name="161" href="#161">161</a>         injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(config));
+<a class="jxr_linenumber" name="162" href="#162">162</a>         LOG.info(<span class="jxr_string">"Starting TSO"</span>);
+<a class="jxr_linenumber" name="163" href="#163">163</a>         tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="164" href="#164">164</a>         tsoServer.startAndWait();
+<a class="jxr_linenumber" name="165" href="#165">165</a>         TestUtils.waitForSocketListening(TSO_HOST, tsoPortForTest, 100);
+<a class="jxr_linenumber" name="166" href="#166">166</a>         LOG.info(<span class="jxr_string">"Finished loading TSO"</span>);
 <a class="jxr_linenumber" name="167" href="#167">167</a> 
-<a class="jxr_linenumber" name="168" href="#168">168</a>         <em class="jxr_comment">// When a HA node for TSOServer is found we should get a connection</em>
-<a class="jxr_linenumber" name="169" href="#169">169</a>         OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="170" href="#170">170</a>         tsoClientConf.setConnectionType(OmidClientConfiguration.ConnType.HA);
-<a class="jxr_linenumber" name="171" href="#171">171</a>         tsoClientConf.setConnectionString(zkClusterForTest);
-<a class="jxr_linenumber" name="172" href="#172">172</a>         tsoClientConf.setZkCurrentTsoPath(CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="173" href="#173">173</a>         TSOClient tsoClient = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="174" href="#174">174</a> 
-<a class="jxr_linenumber" name="175" href="#175">175</a>         <em class="jxr_comment">// ... so we should get responses from the methods</em>
-<a class="jxr_linenumber" name="176" href="#176">176</a>         Long startTS = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="177" href="#177">177</a>         LOG.info(<span class="jxr_string">"Start TS {} "</span>, startTS);
-<a class="jxr_linenumber" name="178" href="#178">178</a>         assertEquals(startTS.longValue(), 1);
-<a class="jxr_linenumber" name="179" href="#179">179</a> 
-<a class="jxr_linenumber" name="180" href="#180">180</a>         <em class="jxr_comment">// Close the tsoClient connection and stop the TSO Server</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a>         tsoClient.close().get();
-<a class="jxr_linenumber" name="182" href="#182">182</a>         tsoServer.stopAndWait();
-<a class="jxr_linenumber" name="183" href="#183">183</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="184" href="#184">184</a>         TestUtils.waitForSocketNotListening(TSO_HOST, tsoPortForTest, 1000);
-<a class="jxr_linenumber" name="185" href="#185">185</a>         LOG.info(<span class="jxr_string">"TSO Server Stopped"</span>);
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>     }
+<a class="jxr_linenumber" name="168" href="#168">168</a>         waitTillTsoRegisters(injector.getInstance(CuratorFramework.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="169" href="#169">169</a> 
+<a class="jxr_linenumber" name="170" href="#170">170</a>         <em class="jxr_comment">// When a HA node for TSOServer is found we should get a connection</em>
+<a class="jxr_linenumber" name="171" href="#171">171</a>         OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="172" href="#172">172</a>         tsoClientConf.setConnectionType(OmidClientConfiguration.ConnType.HA);
+<a class="jxr_linenumber" name="173" href="#173">173</a>         tsoClientConf.setConnectionString(zkClusterForTest);
+<a class="jxr_linenumber" name="174" href="#174">174</a>         tsoClientConf.setZkCurrentTsoPath(CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="175" href="#175">175</a>         TSOClient tsoClient = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>         <em class="jxr_comment">// ... so we should get responses from the methods</em>
+<a class="jxr_linenumber" name="178" href="#178">178</a>         Long startTS = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="179" href="#179">179</a>         LOG.info(<span class="jxr_string">"Start TS {} "</span>, startTS);
+<a class="jxr_linenumber" name="180" href="#180">180</a>         assertEquals(startTS.longValue(), AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN);
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>         <em class="jxr_comment">// Close the tsoClient connection and stop the TSO Server</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a>         tsoClient.close().get();
+<a class="jxr_linenumber" name="184" href="#184">184</a>         tsoServer.stopAndWait();
+<a class="jxr_linenumber" name="185" href="#185">185</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="186" href="#186">186</a>         TestUtils.waitForSocketNotListening(TSO_HOST, tsoPortForTest, 1000);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         LOG.info(<span class="jxr_string">"TSO Server Stopped"</span>);
 <a class="jxr_linenumber" name="188" href="#188">188</a> 
-<a class="jxr_linenumber" name="189" href="#189">189</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSuccessOfTSOClientReconnectionsToARestartedTSOWithZKPublishing() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="191" href="#191">191</a> 
-<a class="jxr_linenumber" name="192" href="#192">192</a>         <em class="jxr_comment">// Start a TSO with HA...</em>
-<a class="jxr_linenumber" name="193" href="#193">193</a>         TSOServerConfig config = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="194" href="#194">194</a>         config.setConflictMapSize(1000);
-<a class="jxr_linenumber" name="195" href="#195">195</a>         config.setPort(tsoPortForTest);
-<a class="jxr_linenumber" name="196" href="#196">196</a>         config.setLeaseModule(<strong class="jxr_keyword">new</strong> HALeaseManagementModule(1000, TSO_LEASE_PATH, CURRENT_TSO_PATH, zkClusterForTest, <span class="jxr_string">"omid"</span>));
-<a class="jxr_linenumber" name="197" href="#197">197</a>         injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(config));
-<a class="jxr_linenumber" name="198" href="#198">198</a>         LOG.info(<span class="jxr_string">"Starting Initial TSO"</span>);
-<a class="jxr_linenumber" name="199" href="#199">199</a>         tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="200" href="#200">200</a>         tsoServer.startAndWait();
-<a class="jxr_linenumber" name="201" href="#201">201</a>         TestUtils.waitForSocketListening(TSO_HOST, tsoPortForTest, 100);
-<a class="jxr_linenumber" name="202" href="#202">202</a>         LOG.info(<span class="jxr_string">"Finished loading TSO"</span>);
-<a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>         waitTillTsoRegisters(injector.getInstance(CuratorFramework.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="189" href="#189">189</a>     }
+<a class="jxr_linenumber" name="190" href="#190">190</a> 
+<a class="jxr_linenumber" name="191" href="#191">191</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSuccessOfTSOClientReconnectionsToARestartedTSOWithZKPublishing() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="193" href="#193">193</a> 
+<a class="jxr_linenumber" name="194" href="#194">194</a>         <em class="jxr_comment">// Start a TSO with HA...</em>
+<a class="jxr_linenumber" name="195" href="#195">195</a>         TSOServerConfig config = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="196" href="#196">196</a>         config.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="197" href="#197">197</a>         config.setPort(tsoPortForTest);
+<a class="jxr_linenumber" name="198" href="#198">198</a>         config.setLeaseModule(<strong class="jxr_keyword">new</strong> HALeaseManagementModule(1000, TSO_LEASE_PATH, CURRENT_TSO_PATH, zkClusterForTest, <span class="jxr_string">"omid"</span>));
+<a class="jxr_linenumber" name="199" href="#199">199</a>         injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(config));
+<a class="jxr_linenumber" name="200" href="#200">200</a>         LOG.info(<span class="jxr_string">"Starting Initial TSO"</span>);
+<a class="jxr_linenumber" name="201" href="#201">201</a>         tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="202" href="#202">202</a>         tsoServer.startAndWait();
+<a class="jxr_linenumber" name="203" href="#203">203</a>         TestUtils.waitForSocketListening(TSO_HOST, tsoPortForTest, 100);
+<a class="jxr_linenumber" name="204" href="#204">204</a>         LOG.info(<span class="jxr_string">"Finished loading TSO"</span>);
 <a class="jxr_linenumber" name="205" href="#205">205</a> 
-<a class="jxr_linenumber" name="206" href="#206">206</a>         <em class="jxr_comment">// Then create the TSO Client under test...</em>
-<a class="jxr_linenumber" name="207" href="#207">207</a>         OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="208" href="#208">208</a>         tsoClientConf.setConnectionType(OmidClientConfiguration.ConnType.HA);
-<a class="jxr_linenumber" name="209" href="#209">209</a>         tsoClientConf.setConnectionString(zkClusterForTest);
-<a class="jxr_linenumber" name="210" href="#210">210</a>         tsoClientConf.setZkCurrentTsoPath(CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="211" href="#211">211</a>         TSOClient tsoClient = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="212" href="#212">212</a> 
-<a class="jxr_linenumber" name="213" href="#213">213</a>         <em class="jxr_comment">// ... and check that initially we get responses from the methods</em>
-<a class="jxr_linenumber" name="214" href="#214">214</a>         Long startTS = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="215" href="#215">215</a>         LOG.info(<span class="jxr_string">"Start TS {} "</span>, startTS);
-<a class="jxr_linenumber" name="216" href="#216">216</a>         assertEquals(startTS.longValue(), 1);
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>         <em class="jxr_comment">// Then stop the server...</em>
-<a class="jxr_linenumber" name="219" href="#219">219</a>         tsoServer.stopAndWait();
-<a class="jxr_linenumber" name="220" href="#220">220</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="221" href="#221">221</a>         TestUtils.waitForSocketNotListening(TSO_HOST, tsoPortForTest, 1000);
-<a class="jxr_linenumber" name="222" href="#222">222</a>         LOG.info(<span class="jxr_string">"Initial TSO Server Stopped"</span>);
-<a class="jxr_linenumber" name="223" href="#223">223</a> 
-<a class="jxr_linenumber" name="224" href="#224">224</a>         Thread.sleep(1500); <em class="jxr_comment">// ...allow the client to receive disconnection event...</em>
-<a class="jxr_linenumber" name="225" href="#225">225</a>         <em class="jxr_comment">// ... and check that we get a conn exception when trying to access the client</em>
-<a class="jxr_linenumber" name="226" href="#226">226</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="227" href="#227">227</a>             startTS = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="228" href="#228">228</a>             fail();
-<a class="jxr_linenumber" name="229" href="#229">229</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
-<a class="jxr_linenumber" name="230" href="#230">230</a>             LOG.info(<span class="jxr_string">"Exception expected"</span>);
-<a class="jxr_linenumber" name="231" href="#231">231</a>             <em class="jxr_comment">// Internal accessor to fsm to do the required checkings</em>
-<a class="jxr_linenumber" name="232" href="#232">232</a>             FsmImpl fsm = (FsmImpl) tsoClient.fsm;
-<a class="jxr_linenumber" name="233" href="#233">233</a>             assertEquals(e.getCause().getClass(), ConnectionException.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="234" href="#234">234</a>             assertTrue(fsm.getState().getClass().equals(TSOClient.ConnectionFailedState.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="235" href="#235">235</a>                                ||
-<a class="jxr_linenumber" name="236" href="#236">236</a>                                fsm.getState().getClass().equals(TSOClient.DisconnectedState.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="237" href="#237">237</a>         }
-<a class="jxr_linenumber" name="238" href="#238">238</a> 
-<a class="jxr_linenumber" name="239" href="#239">239</a>         <em class="jxr_comment">// After that, simulate that a new TSO has been launched...</em>
-<a class="jxr_linenumber" name="240" href="#240">240</a>         Injector newInjector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(config));
-<a class="jxr_linenumber" name="241" href="#241">241</a>         LOG.info(<span class="jxr_string">"Re-Starting again the TSO"</span>);
-<a class="jxr_linenumber" name="242" href="#242">242</a>         tsoServer = newInjector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="243" href="#243">243</a>         tsoServer.startAndWait();
-<a class="jxr_linenumber" name="244" href="#244">244</a>         TestUtils.waitForSocketListening(TSO_HOST, tsoPortForTest, 100);
-<a class="jxr_linenumber" name="245" href="#245">245</a>         LOG.info(<span class="jxr_string">"Finished loading restarted TSO"</span>);
-<a class="jxr_linenumber" name="246" href="#246">246</a> 
-<a class="jxr_linenumber" name="247" href="#247">247</a>         <em class="jxr_comment">// Finally re-check that, eventually, we can get a new value from the new TSO...</em>
-<a class="jxr_linenumber" name="248" href="#248">248</a>         <strong class="jxr_keyword">boolean</strong> reconnectionActive = false;
-<a class="jxr_linenumber" name="249" href="#249">249</a>         <strong class="jxr_keyword">while</strong> (!reconnectionActive) {
-<a class="jxr_linenumber" name="250" href="#250">250</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="251" href="#251">251</a>                 startTS = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="252" href="#252">252</a>                 reconnectionActive = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="253" href="#253">253</a>             } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
-<a class="jxr_linenumber" name="254" href="#254">254</a>                 <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="255" href="#255">255</a>             }
-<a class="jxr_linenumber" name="256" href="#256">256</a>         }
-<a class="jxr_linenumber" name="257" href="#257">257</a>         assertNotNull(startTS);
-<a class="jxr_linenumber" name="258" href="#258">258</a> 
-<a class="jxr_linenumber" name="259" href="#259">259</a>         <em class="jxr_comment">// ...and stop the server</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a>         tsoServer.stopAndWait();
-<a class="jxr_linenumber" name="261" href="#261">261</a>         TestUtils.waitForSocketNotListening(TSO_HOST, tsoPortForTest, 1000);
-<a class="jxr_linenumber" name="262" href="#262">262</a>         LOG.info(<span class="jxr_string">"Restarted TSO Server Stopped"</span>);
-<a class="jxr_linenumber" name="263" href="#263">263</a>     }
-<a class="jxr_linenumber" name="264" href="#264">264</a> 
-<a class="jxr_linenumber" name="265" href="#265">265</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> waitTillTsoRegisters(CuratorFramework zkClient) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="266" href="#266">266</a>         <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
-<a class="jxr_linenumber" name="267" href="#267">267</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="268" href="#268">268</a>                 Stat stat = zkClient.checkExists().forPath(CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="269" href="#269">269</a>                 <strong class="jxr_keyword">if</strong> (stat == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="270" href="#270">270</a>                     <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="271" href="#271">271</a>                 }
-<a class="jxr_linenumber" name="272" href="#272">272</a>                 LOG.info(<span class="jxr_string">"TSO registered in HA with path {}={}"</span>, CURRENT_TSO_PATH, stat.toString());
-<a class="jxr_linenumber" name="273" href="#273">273</a>                 <strong class="jxr_keyword">if</strong> (stat.toString().length() == 0) {
-<a class="jxr_linenumber" name="274" href="#274">274</a>                     <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="275" href="#275">275</a>                 }
-<a class="jxr_linenumber" name="276" href="#276">276</a>                 <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="277" href="#277">277</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="278" href="#278">278</a>                 LOG.debug(<span class="jxr_string">"TSO still has not registered yet, sleeping..."</span>, e);
-<a class="jxr_linenumber" name="279" href="#279">279</a>                 Thread.sleep(500);
-<a class="jxr_linenumber" name="280" href="#280">280</a>             }
-<a class="jxr_linenumber" name="281" href="#281">281</a>         }
-<a class="jxr_linenumber" name="282" href="#282">282</a>     }
-<a class="jxr_linenumber" name="283" href="#283">283</a> 
-<a class="jxr_linenumber" name="284" href="#284">284</a> }
+<a class="jxr_linenumber" name="206" href="#206">206</a>         waitTillTsoRegisters(injector.getInstance(CuratorFramework.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="207" href="#207">207</a> 
+<a class="jxr_linenumber" name="208" href="#208">208</a>         <em class="jxr_comment">// Then create the TSO Client under test...</em>
+<a class="jxr_linenumber" name="209" href="#209">209</a>         OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="210" href="#210">210</a>         tsoClientConf.setConnectionType(OmidClientConfiguration.ConnType.HA);
+<a class="jxr_linenumber" name="211" href="#211">211</a>         tsoClientConf.setConnectionString(zkClusterForTest);
+<a class="jxr_linenumber" name="212" href="#212">212</a>         tsoClientConf.setZkCurrentTsoPath(CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="213" href="#213">213</a>         TSOClient tsoClient = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="214" href="#214">214</a> 
+<a class="jxr_linenumber" name="215" href="#215">215</a>         <em class="jxr_comment">// ... and check that initially we get responses from the methods</em>
+<a class="jxr_linenumber" name="216" href="#216">216</a>         Long startTS = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="217" href="#217">217</a>         LOG.info(<span class="jxr_string">"Start TS {} "</span>, startTS);
+<a class="jxr_linenumber" name="218" href="#218">218</a>         assertEquals(startTS.longValue(), AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN);
+<a class="jxr_linenumber" name="219" href="#219">219</a> 
+<a class="jxr_linenumber" name="220" href="#220">220</a>         <em class="jxr_comment">// Then stop the server...</em>
+<a class="jxr_linenumber" name="221" href="#221">221</a>         tsoServer.stopAndWait();
+<a class="jxr_linenumber" name="222" href="#222">222</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="223" href="#223">223</a>         TestUtils.waitForSocketNotListening(TSO_HOST, tsoPortForTest, 1000);
+<a class="jxr_linenumber" name="224" href="#224">224</a>         LOG.info(<span class="jxr_string">"Initial TSO Server Stopped"</span>);
+<a class="jxr_linenumber" name="225" href="#225">225</a> 
+<a class="jxr_linenumber" name="226" href="#226">226</a>         Thread.sleep(1500); <em class="jxr_comment">// ...allow the client to receive disconnection event...</em>
+<a class="jxr_linenumber" name="227" href="#227">227</a>         <em class="jxr_comment">// ... and check that we get a conn exception when trying to access the client</em>
+<a class="jxr_linenumber" name="228" href="#228">228</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="229" href="#229">229</a>             startTS = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="230" href="#230">230</a>             fail();
+<a class="jxr_linenumber" name="231" href="#231">231</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="232" href="#232">232</a>             LOG.info(<span class="jxr_string">"Exception expected"</span>);
+<a class="jxr_linenumber" name="233" href="#233">233</a>             <em class="jxr_comment">// Internal accessor to fsm to do the required checkings</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a>             FsmImpl fsm = (FsmImpl) tsoClient.fsm;
+<a class="jxr_linenumber" name="235" href="#235">235</a>             assertEquals(e.getCause().getClass(), ConnectionException.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="236" href="#236">236</a>             assertTrue(fsm.getState().getClass().equals(TSOClient.ConnectionFailedState.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="237" href="#237">237</a>                                ||
+<a class="jxr_linenumber" name="238" href="#238">238</a>                                fsm.getState().getClass().equals(TSOClient.DisconnectedState.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="239" href="#239">239</a>         }
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>         <em class="jxr_comment">// After that, simulate that a new TSO has been launched...</em>
+<a class="jxr_linenumber" name="242" href="#242">242</a>         Injector newInjector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(config));
+<a class="jxr_linenumber" name="243" href="#243">243</a>         LOG.info(<span class="jxr_string">"Re-Starting again the TSO"</span>);
+<a class="jxr_linenumber" name="244" href="#244">244</a>         tsoServer = newInjector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="245" href="#245">245</a>         tsoServer.startAndWait();
+<a class="jxr_linenumber" name="246" href="#246">246</a>         TestUtils.waitForSocketListening(TSO_HOST, tsoPortForTest, 100);
+<a class="jxr_linenumber" name="247" href="#247">247</a>         LOG.info(<span class="jxr_string">"Finished loading restarted TSO"</span>);
+<a class="jxr_linenumber" name="248" href="#248">248</a> 
+<a class="jxr_linenumber" name="249" href="#249">249</a>         <em class="jxr_comment">// Finally re-check that, eventually, we can get a new value from the new TSO...</em>
+<a class="jxr_linenumber" name="250" href="#250">250</a>         <strong class="jxr_keyword">boolean</strong> reconnectionActive = false;
+<a class="jxr_linenumber" name="251" href="#251">251</a>         <strong class="jxr_keyword">while</strong> (!reconnectionActive) {
+<a class="jxr_linenumber" name="252" href="#252">252</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="253" href="#253">253</a>                 startTS = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="254" href="#254">254</a>                 reconnectionActive = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="255" href="#255">255</a>             } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="256" href="#256">256</a>                 <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="257" href="#257">257</a>             }
+<a class="jxr_linenumber" name="258" href="#258">258</a>         }
+<a class="jxr_linenumber" name="259" href="#259">259</a>         assertNotNull(startTS);
+<a class="jxr_linenumber" name="260" href="#260">260</a> 
+<a class="jxr_linenumber" name="261" href="#261">261</a>         <em class="jxr_comment">// ...and stop the server</em>
+<a class="jxr_linenumber" name="262" href="#262">262</a>         tsoServer.stopAndWait();
+<a class="jxr_linenumber" name="263" href="#263">263</a>         TestUtils.waitForSocketNotListening(TSO_HOST, tsoPortForTest, 1000);
+<a class="jxr_linenumber" name="264" href="#264">264</a>         LOG.info(<span class="jxr_string">"Restarted TSO Server Stopped"</span>);
+<a class="jxr_linenumber" name="265" href="#265">265</a>     }
+<a class="jxr_linenumber" name="266" href="#266">266</a> 
+<a class="jxr_linenumber" name="267" href="#267">267</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> waitTillTsoRegisters(CuratorFramework zkClient) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="268" href="#268">268</a>         <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
+<a class="jxr_linenumber" name="269" href="#269">269</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="270" href="#270">270</a>                 Stat stat = zkClient.checkExists().forPath(CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="271" href="#271">271</a>                 <strong class="jxr_keyword">if</strong> (stat == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="272" href="#272">272</a>                     <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="273" href="#273">273</a>                 }
+<a class="jxr_linenumber" name="274" href="#274">274</a>                 LOG.info(<span class="jxr_string">"TSO registered in HA with path {}={}"</span>, CURRENT_TSO_PATH, stat.toString());
+<a class="jxr_linenumber" name="275" href="#275">275</a>                 <strong class="jxr_keyword">if</strong> (stat.toString().length() == 0) {
+<a class="jxr_linenumber" name="276" href="#276">276</a>                     <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="277" href="#277">277</a>                 }
+<a class="jxr_linenumber" name="278" href="#278">278</a>                 <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="279" href="#279">279</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="280" href="#280">280</a>                 LOG.debug(<span class="jxr_string">"TSO still has not registered yet, sleeping..."</span>, e);
+<a class="jxr_linenumber" name="281" href="#281">281</a>                 Thread.sleep(500);
+<a class="jxr_linenumber" name="282" href="#282">282</a>             }
+<a class="jxr_linenumber" name="283" href="#283">283</a>         }
+<a class="jxr_linenumber" name="284" href="#284">284</a>     }
+<a class="jxr_linenumber" name="285" href="#285">285</a> 
+<a class="jxr_linenumber" name="286" href="#286">286</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[32/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestSnapshotFilter.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestSnapshotFilter.html b/xref-test/org/apache/omid/transaction/TestSnapshotFilter.html
new file mode 100644
index 0000000..5097759
--- /dev/null
+++ b/xref-test/org/apache/omid/transaction/TestSnapshotFilter.html
@@ -0,0 +1,894 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TestSnapshotFilter xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/testapidocs/org/apache/omid/transaction/TestSnapshotFilter.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicBoolean;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Coprocessor;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseTestingUtility;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.MiniHBaseCluster;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Admin;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.BinaryComparator;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.CompareFilter;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.FamilyFilter;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.FilterList;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.SubstringComparator;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig;
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterClass;
+<a class="jxr_linenumber" name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
+<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
+<a class="jxr_linenumber" name="72" href="#72">72</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
+<a class="jxr_linenumber" name="73" href="#73">73</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestSnapshotFilter.html">TestSnapshotFilter</a> {
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestSnapshotFilter.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="78" href="#78">78</a>  
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY = <span class="jxr_string">"test-fam"</span>;
+<a class="jxr_linenumber" name="80" href="#80">80</a>      
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_VERSIONS = 3;
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> AbstractTransactionManager tm;
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> Injector injector;
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">private</strong> Admin admin;
+<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> Configuration hbaseConf;
+<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">private</strong> HBaseTestingUtility hbaseTestUtil;
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">private</strong> MiniHBaseCluster hbaseCluster;
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">private</strong> TSOServer tso;
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">private</strong> CommitTable commitTable;
+<a class="jxr_linenumber" name="95" href="#95">95</a>      <strong class="jxr_keyword">private</strong> PostCommitActions syncPostCommitter;
+<a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">private</strong> Connection connection;
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>      @BeforeClass
+<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setupTestSnapshotFilter() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="100" href="#100">100</a>         TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="101" href="#101">101</a>         tsoConfig.setPort(5678);
+<a class="jxr_linenumber" name="102" href="#102">102</a>         tsoConfig.setConflictMapSize(1);
+<a class="jxr_linenumber" name="103" href="#103">103</a>         tsoConfig.setWaitStrategy(<span class="jxr_string">"LOW_CPU"</span>);
+<a class="jxr_linenumber" name="104" href="#104">104</a>         injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html">TSOForSnapshotFilterTestModule</a>(tsoConfig));
+<a class="jxr_linenumber" name="105" href="#105">105</a>         hbaseConf = injector.getInstance(Configuration.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="106" href="#106">106</a>         hbaseConf.setBoolean(<span class="jxr_string">"omid.server.side.filter"</span>, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="107" href="#107">107</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.hconnection.threads.core"</span>, 5);
+<a class="jxr_linenumber" name="108" href="#108">108</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.hconnection.threads.max"</span>, 10);
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <em class="jxr_comment">// Tunn down handler threads in regionserver</em>
+<a class="jxr_linenumber" name="110" href="#110">110</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.regionserver.handler.count"</span>, 10);
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>         <em class="jxr_comment">// Set to random port</em>
+<a class="jxr_linenumber" name="113" href="#113">113</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.master.port"</span>, 0);
+<a class="jxr_linenumber" name="114" href="#114">114</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.master.info.port"</span>, 0);
+<a class="jxr_linenumber" name="115" href="#115">115</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.regionserver.port"</span>, 0);
+<a class="jxr_linenumber" name="116" href="#116">116</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.regionserver.info.port"</span>, 0);
+<a class="jxr_linenumber" name="117" href="#117">117</a> 
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>         HBaseCommitTableConfig hBaseCommitTableConfig = injector.getInstance(HBaseCommitTableConfig.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="120" href="#120">120</a>         HBaseTimestampStorageConfig hBaseTimestampStorageConfig = injector.getInstance(HBaseTimestampStorageConfig.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>         setupHBase();
+<a class="jxr_linenumber" name="123" href="#123">123</a>         connection = ConnectionFactory.createConnection(hbaseConf);
+<a class="jxr_linenumber" name="124" href="#124">124</a>         admin = connection.getAdmin();
+<a class="jxr_linenumber" name="125" href="#125">125</a>         createRequiredHBaseTables(hBaseTimestampStorageConfig, hBaseCommitTableConfig);
+<a class="jxr_linenumber" name="126" href="#126">126</a>         setupTSO();
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>         commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="129" href="#129">129</a>     }
+<a class="jxr_linenumber" name="130" href="#130">130</a> 
+<a class="jxr_linenumber" name="131" href="#131">131</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setupHBase() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="132" href="#132">132</a>         LOG.info(<span class="jxr_string">"--------------------------------------------------------------------------------------------------"</span>);
+<a class="jxr_linenumber" name="133" href="#133">133</a>         LOG.info(<span class="jxr_string">"Setting up HBase"</span>);
+<a class="jxr_linenumber" name="134" href="#134">134</a>         LOG.info(<span class="jxr_string">"--------------------------------------------------------------------------------------------------"</span>);
+<a class="jxr_linenumber" name="135" href="#135">135</a>         hbaseTestUtil = <strong class="jxr_keyword">new</strong> HBaseTestingUtility(hbaseConf);
+<a class="jxr_linenumber" name="136" href="#136">136</a>         LOG.info(<span class="jxr_string">"--------------------------------------------------------------------------------------------------"</span>);
+<a class="jxr_linenumber" name="137" href="#137">137</a>         LOG.info(<span class="jxr_string">"Creating HBase MiniCluster"</span>);
+<a class="jxr_linenumber" name="138" href="#138">138</a>         LOG.info(<span class="jxr_string">"--------------------------------------------------------------------------------------------------"</span>);
+<a class="jxr_linenumber" name="139" href="#139">139</a>         hbaseCluster = hbaseTestUtil.startMiniCluster(1);
+<a class="jxr_linenumber" name="140" href="#140">140</a>     }
+<a class="jxr_linenumber" name="141" href="#141">141</a> 
+<a class="jxr_linenumber" name="142" href="#142">142</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createRequiredHBaseTables(HBaseTimestampStorageConfig timestampStorageConfig,
+<a class="jxr_linenumber" name="143" href="#143">143</a>                                            HBaseCommitTableConfig hBaseCommitTableConfig) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="144" href="#144">144</a>         createTableIfNotExists(timestampStorageConfig.getTableName(), timestampStorageConfig.getFamilyName().getBytes());
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>         createTableIfNotExists(hBaseCommitTableConfig.getTableName(), hBaseCommitTableConfig.getCommitTableFamily(), hBaseCommitTableConfig.getLowWatermarkFamily());
+<a class="jxr_linenumber" name="147" href="#147">147</a>     }
+<a class="jxr_linenumber" name="148" href="#148">148</a> 
+<a class="jxr_linenumber" name="149" href="#149">149</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createTableIfNotExists(String tableName, byte[]... families) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="150" href="#150">150</a>         <strong class="jxr_keyword">if</strong> (!admin.tableExists(TableName.valueOf(tableName))) {
+<a class="jxr_linenumber" name="151" href="#151">151</a>             LOG.info(<span class="jxr_string">"Creating {} table..."</span>, tableName);
+<a class="jxr_linenumber" name="152" href="#152">152</a>             HTableDescriptor desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(TableName.valueOf(tableName));
+<a class="jxr_linenumber" name="153" href="#153">153</a> 
+<a class="jxr_linenumber" name="154" href="#154">154</a>             <strong class="jxr_keyword">for</strong> (byte[] family : families) {
+<a class="jxr_linenumber" name="155" href="#155">155</a>                 HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(family);
+<a class="jxr_linenumber" name="156" href="#156">156</a>                 datafam.setMaxVersions(MAX_VERSIONS);
+<a class="jxr_linenumber" name="157" href="#157">157</a>                 desc.addFamily(datafam);
+<a class="jxr_linenumber" name="158" href="#158">158</a>             }
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>             <strong class="jxr_keyword">int</strong> priority = Coprocessor.PRIORITY_HIGHEST;
+<a class="jxr_linenumber" name="161" href="#161">161</a> 
+<a class="jxr_linenumber" name="162" href="#162">162</a>             desc.addCoprocessor(OmidSnapshotFilter.<strong class="jxr_keyword">class</strong>.getName(),<strong class="jxr_keyword">null</strong>,++priority,<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="163" href="#163">163</a>             desc.addCoprocessor(<span class="jxr_string">"org.apache.hadoop.hbase.coprocessor.AggregateImplementation"</span>,<strong class="jxr_keyword">null</strong>,++priority,<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>             admin.createTable(desc);
+<a class="jxr_linenumber" name="166" href="#166">166</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="167" href="#167">167</a>                 hbaseTestUtil.waitTableAvailable(TableName.valueOf(tableName),5000);
+<a class="jxr_linenumber" name="168" href="#168">168</a>             } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
+<a class="jxr_linenumber" name="169" href="#169">169</a>                 e.printStackTrace();
+<a class="jxr_linenumber" name="170" href="#170">170</a>             }
+<a class="jxr_linenumber" name="171" href="#171">171</a>         }
+<a class="jxr_linenumber" name="172" href="#172">172</a> 
+<a class="jxr_linenumber" name="173" href="#173">173</a>     }
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setupTSO() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="176" href="#176">176</a>         tso = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         tso.startAndWait();
+<a class="jxr_linenumber" name="178" href="#178">178</a>         TestUtils.waitForSocketListening(<span class="jxr_string">"localhost"</span>, 5678, 100);
+<a class="jxr_linenumber" name="179" href="#179">179</a>         Thread.currentThread().setName(<span class="jxr_string">"UnitTest(s) thread"</span>);
+<a class="jxr_linenumber" name="180" href="#180">180</a>     }
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>     @AfterClass
+<a class="jxr_linenumber" name="183" href="#183">183</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> cleanupTestSnapshotFilter() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="184" href="#184">184</a>         teardownTSO();
+<a class="jxr_linenumber" name="185" href="#185">185</a>         hbaseCluster.shutdown();
+<a class="jxr_linenumber" name="186" href="#186">186</a>     }
+<a class="jxr_linenumber" name="187" href="#187">187</a> 
+<a class="jxr_linenumber" name="188" href="#188">188</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> teardownTSO() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="189" href="#189">189</a>         tso.stopAndWait();
+<a class="jxr_linenumber" name="190" href="#190">190</a>         TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, 5678, 1000);
+<a class="jxr_linenumber" name="191" href="#191">191</a>     }
+<a class="jxr_linenumber" name="192" href="#192">192</a> 
+<a class="jxr_linenumber" name="193" href="#193">193</a>     @BeforeMethod
+<a class="jxr_linenumber" name="194" href="#194">194</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setupTestSnapshotFilterIndividualTest() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="195" href="#195">195</a>         tm = spy((AbstractTransactionManager) newTransactionManager());
+<a class="jxr_linenumber" name="196" href="#196">196</a>     }
+<a class="jxr_linenumber" name="197" href="#197">197</a> 
+<a class="jxr_linenumber" name="198" href="#198">198</a>     <strong class="jxr_keyword">private</strong> TransactionManager newTransactionManager() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="199" href="#199">199</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="200" href="#200">200</a>         hbaseOmidClientConf.setConnectionString(<span class="jxr_string">"localhost:5678"</span>);
+<a class="jxr_linenumber" name="201" href="#201">201</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="202" href="#202">202</a>         CommitTable.Client commitTableClient = commitTable.getClient();
+<a class="jxr_linenumber" name="203" href="#203">203</a>         syncPostCommitter =
+<a class="jxr_linenumber" name="204" href="#204">204</a>                 spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(),commitTableClient));
+<a class="jxr_linenumber" name="205" href="#205">205</a>         <strong class="jxr_keyword">return</strong> HBaseTransactionManager.builder(hbaseOmidClientConf)
+<a class="jxr_linenumber" name="206" href="#206">206</a>                 .postCommitter(syncPostCommitter)
+<a class="jxr_linenumber" name="207" href="#207">207</a>                 .commitTableClient(commitTableClient)
+<a class="jxr_linenumber" name="208" href="#208">208</a>                 .build();
+<a class="jxr_linenumber" name="209" href="#209">209</a>     }
+<a class="jxr_linenumber" name="210" href="#210">210</a> 
+<a class="jxr_linenumber" name="211" href="#211">211</a> 
+<a class="jxr_linenumber" name="212" href="#212">212</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="213" href="#213">213</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetFirstResult() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="214" href="#214">214</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="215" href="#215">215</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="216" href="#216">216</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="217" href="#217">217</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>         String TEST_TABLE = <span class="jxr_string">"testGetFirstResult"</span>;
+<a class="jxr_linenumber" name="220" href="#220">220</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
+<a class="jxr_linenumber" name="221" href="#221">221</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="222" href="#222">222</a> 
+<a class="jxr_linenumber" name="223" href="#223">223</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="224" href="#224">224</a> 
+<a class="jxr_linenumber" name="225" href="#225">225</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="226" href="#226">226</a>         row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="227" href="#227">227</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="228" href="#228">228</a>      
+<a class="jxr_linenumber" name="229" href="#229">229</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="230" href="#230">230</a> 
+<a class="jxr_linenumber" name="231" href="#231">231</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="232" href="#232">232</a> 
+<a class="jxr_linenumber" name="233" href="#233">233</a>         Get get = <strong class="jxr_keyword">new</strong> Get(rowName1);
+<a class="jxr_linenumber" name="234" href="#234">234</a>         Result result = tt.get(tx2, get);
+<a class="jxr_linenumber" name="235" href="#235">235</a> 
+<a class="jxr_linenumber" name="236" href="#236">236</a>         assertTrue(!result.isEmpty(), <span class="jxr_string">"Result should not be empty!"</span>);
+<a class="jxr_linenumber" name="237" href="#237">237</a> 
+<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">long</strong> tsRow = result.rawCells()[0].getTimestamp();
+<a class="jxr_linenumber" name="239" href="#239">239</a>         assertEquals(tsRow, tx1.getTransactionId(), <span class="jxr_string">"Reading differnt version"</span>);
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>         tm.commit(tx2);
+<a class="jxr_linenumber" name="242" href="#242">242</a> 
+<a class="jxr_linenumber" name="243" href="#243">243</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="244" href="#244">244</a> 
+<a class="jxr_linenumber" name="245" href="#245">245</a>         Put put3 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="246" href="#246">246</a>         put3.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="247" href="#247">247</a>         tt.put(tx3, put3);
+<a class="jxr_linenumber" name="248" href="#248">248</a> 
+<a class="jxr_linenumber" name="249" href="#249">249</a>         tm.commit(tx3);
+<a class="jxr_linenumber" name="250" href="#250">250</a>         
+<a class="jxr_linenumber" name="251" href="#251">251</a>         Transaction tx4 = tm.begin();
+<a class="jxr_linenumber" name="252" href="#252">252</a> 
+<a class="jxr_linenumber" name="253" href="#253">253</a>         Get get2 = <strong class="jxr_keyword">new</strong> Get(rowName1);
+<a class="jxr_linenumber" name="254" href="#254">254</a>         Result result2 = tt.get(tx4, get2);
+<a class="jxr_linenumber" name="255" href="#255">255</a> 
+<a class="jxr_linenumber" name="256" href="#256">256</a>         assertTrue(!result2.isEmpty(), <span class="jxr_string">"Result should not be empty!"</span>);
+<a class="jxr_linenumber" name="257" href="#257">257</a> 
+<a class="jxr_linenumber" name="258" href="#258">258</a>         <strong class="jxr_keyword">long</strong> tsRow2 = result2.rawCells()[0].getTimestamp();
+<a class="jxr_linenumber" name="259" href="#259">259</a>         assertEquals(tsRow2, tx3.getTransactionId(), <span class="jxr_string">"Reading differnt version"</span>);
+<a class="jxr_linenumber" name="260" href="#260">260</a> 
+<a class="jxr_linenumber" name="261" href="#261">261</a>         tm.commit(tx4);
+<a class="jxr_linenumber" name="262" href="#262">262</a> 
+<a class="jxr_linenumber" name="263" href="#263">263</a>         tt.close();
+<a class="jxr_linenumber" name="264" href="#264">264</a>     }
+<a class="jxr_linenumber" name="265" href="#265">265</a> 
+<a class="jxr_linenumber" name="266" href="#266">266</a> 
+<a class="jxr_linenumber" name="267" href="#267">267</a>     <em class="jxr_comment">// This test will fail if filtering is done before snapshot filtering</em>
+<a class="jxr_linenumber" name="268" href="#268">268</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="269" href="#269">269</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testServerSideSnapshotFiltering() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="270" href="#270">270</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="271" href="#271">271</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="272" href="#272">272</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="273" href="#273">273</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="274" href="#274">274</a>         byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="275" href="#275">275</a> 
+<a class="jxr_linenumber" name="276" href="#276">276</a>         String TEST_TABLE = <span class="jxr_string">"testServerSideSnapshotFiltering"</span>;
+<a class="jxr_linenumber" name="277" href="#277">277</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
+<a class="jxr_linenumber" name="278" href="#278">278</a> 
+<a class="jxr_linenumber" name="279" href="#279">279</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="280" href="#280">280</a> 
+<a class="jxr_linenumber" name="281" href="#281">281</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="282" href="#282">282</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="283" href="#283">283</a>         put1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="284" href="#284">284</a>         tt.put(tx1, put1);
+<a class="jxr_linenumber" name="285" href="#285">285</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="286" href="#286">286</a> 
+<a class="jxr_linenumber" name="287" href="#287">287</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="288" href="#288">288</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="289" href="#289">289</a>         put2.addColumn(famName1, colName1, dataValue2);
+<a class="jxr_linenumber" name="290" href="#290">290</a>         tt.put(tx2, put2);
+<a class="jxr_linenumber" name="291" href="#291">291</a> 
+<a class="jxr_linenumber" name="292" href="#292">292</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="293" href="#293">293</a>         Get get = <strong class="jxr_keyword">new</strong> Get(rowName1);
+<a class="jxr_linenumber" name="294" href="#294">294</a> 
+<a class="jxr_linenumber" name="295" href="#295">295</a>         <em class="jxr_comment">// If snapshot filtering is not done in the server then the first value is</em>
+<a class="jxr_linenumber" name="296" href="#296">296</a>         <em class="jxr_comment">// "testWrite-2" and the whole row will be filtered out.</em>
+<a class="jxr_linenumber" name="297" href="#297">297</a>         SingleColumnValueFilter filter = <strong class="jxr_keyword">new</strong> SingleColumnValueFilter(
+<a class="jxr_linenumber" name="298" href="#298">298</a>                 famName1,
+<a class="jxr_linenumber" name="299" href="#299">299</a>                 colName1,
+<a class="jxr_linenumber" name="300" href="#300">300</a>                 CompareFilter.CompareOp.EQUAL,
+<a class="jxr_linenumber" name="301" href="#301">301</a>                 <strong class="jxr_keyword">new</strong> SubstringComparator(<span class="jxr_string">"testWrite-1"</span>));
+<a class="jxr_linenumber" name="302" href="#302">302</a> 
+<a class="jxr_linenumber" name="303" href="#303">303</a>         get.setFilter(filter);
+<a class="jxr_linenumber" name="304" href="#304">304</a>         Result results = tt.get(tx3, get);
+<a class="jxr_linenumber" name="305" href="#305">305</a>         assertTrue(results.size() == 1);
+<a class="jxr_linenumber" name="306" href="#306">306</a>     }
+<a class="jxr_linenumber" name="307" href="#307">307</a> 
+<a class="jxr_linenumber" name="308" href="#308">308</a> 
+<a class="jxr_linenumber" name="309" href="#309">309</a>     <em class="jxr_comment">// This test will fail if filtering is done before snapshot filtering</em>
+<a class="jxr_linenumber" name="310" href="#310">310</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="311" href="#311">311</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testServerSideSnapshotScannerFiltering() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="312" href="#312">312</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="313" href="#313">313</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="314" href="#314">314</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="315" href="#315">315</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="316" href="#316">316</a>         byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="317" href="#317">317</a> 
+<a class="jxr_linenumber" name="318" href="#318">318</a>         String TEST_TABLE = <span class="jxr_string">"testServerSideSnapshotFiltering"</span>;
+<a class="jxr_linenumber" name="319" href="#319">319</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
+<a class="jxr_linenumber" name="320" href="#320">320</a> 
+<a class="jxr_linenumber" name="321" href="#321">321</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="322" href="#322">322</a> 
+<a class="jxr_linenumber" name="323" href="#323">323</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="324" href="#324">324</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="325" href="#325">325</a>         put1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="326" href="#326">326</a>         tt.put(tx1, put1);
+<a class="jxr_linenumber" name="327" href="#327">327</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="328" href="#328">328</a> 
+<a class="jxr_linenumber" name="329" href="#329">329</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="330" href="#330">330</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="331" href="#331">331</a>         put2.addColumn(famName1, colName1, dataValue2);
+<a class="jxr_linenumber" name="332" href="#332">332</a> <em class="jxr_comment">//        tt.put(tx2, put2);</em>
+<a class="jxr_linenumber" name="333" href="#333">333</a> 
+<a class="jxr_linenumber" name="334" href="#334">334</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="335" href="#335">335</a> 
+<a class="jxr_linenumber" name="336" href="#336">336</a>         <em class="jxr_comment">// If snapshot filtering is not done in the server then the first value is</em>
+<a class="jxr_linenumber" name="337" href="#337">337</a>         <em class="jxr_comment">// "testWrite-2" and the whole row will be filtered out.</em>
+<a class="jxr_linenumber" name="338" href="#338">338</a>         SingleColumnValueFilter filter = <strong class="jxr_keyword">new</strong> SingleColumnValueFilter(
+<a class="jxr_linenumber" name="339" href="#339">339</a>                 famName1,
+<a class="jxr_linenumber" name="340" href="#340">340</a>                 colName1,
+<a class="jxr_linenumber" name="341" href="#341">341</a>                 CompareFilter.CompareOp.EQUAL,
+<a class="jxr_linenumber" name="342" href="#342">342</a>                 <strong class="jxr_keyword">new</strong> SubstringComparator(<span class="jxr_string">"testWrite-1"</span>));
+<a class="jxr_linenumber" name="343" href="#343">343</a> 
+<a class="jxr_linenumber" name="344" href="#344">344</a> 
+<a class="jxr_linenumber" name="345" href="#345">345</a>         Scan scan = <strong class="jxr_keyword">new</strong> Scan();
+<a class="jxr_linenumber" name="346" href="#346">346</a>         scan.setFilter(filter);
+<a class="jxr_linenumber" name="347" href="#347">347</a> 
+<a class="jxr_linenumber" name="348" href="#348">348</a>         ResultScanner iterableRS = tt.getScanner(tx3, scan);
+<a class="jxr_linenumber" name="349" href="#349">349</a>         Result result = iterableRS.next();
+<a class="jxr_linenumber" name="350" href="#350">350</a> 
+<a class="jxr_linenumber" name="351" href="#351">351</a>         assertTrue(result.size() == 1);
+<a class="jxr_linenumber" name="352" href="#352">352</a>     }
+<a class="jxr_linenumber" name="353" href="#353">353</a> 
+<a class="jxr_linenumber" name="354" href="#354">354</a> 
+<a class="jxr_linenumber" name="355" href="#355">355</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="356" href="#356">356</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetWithFamilyDelete() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="357" href="#357">357</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="358" href="#358">358</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="359" href="#359">359</a>         byte[] famName2 = Bytes.toBytes(<span class="jxr_string">"test-fam2"</span>);
+<a class="jxr_linenumber" name="360" href="#360">360</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="361" href="#361">361</a>         byte[] colName2 = Bytes.toBytes(<span class="jxr_string">"col2"</span>);
+<a class="jxr_linenumber" name="362" href="#362">362</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="363" href="#363">363</a> 
+<a class="jxr_linenumber" name="364" href="#364">364</a>         String TEST_TABLE = <span class="jxr_string">"testGetWithFamilyDelete"</span>;
+<a class="jxr_linenumber" name="365" href="#365">365</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY), famName2);
+<a class="jxr_linenumber" name="366" href="#366">366</a> 
+<a class="jxr_linenumber" name="367" href="#367">367</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="368" href="#368">368</a> 
+<a class="jxr_linenumber" name="369" href="#369">369</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="370" href="#370">370</a> 
+<a class="jxr_linenumber" name="371" href="#371">371</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="372" href="#372">372</a>         put1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="373" href="#373">373</a>         tt.put(tx1, put1);
+<a class="jxr_linenumber" name="374" href="#374">374</a> 
+<a class="jxr_linenumber" name="375" href="#375">375</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="376" href="#376">376</a> 
+<a class="jxr_linenumber" name="377" href="#377">377</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="378" href="#378">378</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="379" href="#379">379</a>         put2.addColumn(famName2, colName2, dataValue1);
+<a class="jxr_linenumber" name="380" href="#380">380</a>         tt.put(tx2, put2);
+<a class="jxr_linenumber" name="381" href="#381">381</a>         tm.commit(tx2);
+<a class="jxr_linenumber" name="382" href="#382">382</a> 
+<a class="jxr_linenumber" name="383" href="#383">383</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="384" href="#384">384</a> 
+<a class="jxr_linenumber" name="385" href="#385">385</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(rowName1);
+<a class="jxr_linenumber" name="386" href="#386">386</a>         d.addFamily(famName2);
+<a class="jxr_linenumber" name="387" href="#387">387</a>         tt.delete(tx3, d);
+<a class="jxr_linenumber" name="388" href="#388">388</a> 
+<a class="jxr_linenumber" name="389" href="#389">389</a> 
+<a class="jxr_linenumber" name="390" href="#390">390</a>         Transaction tx4 = tm.begin();
+<a class="jxr_linenumber" name="391" href="#391">391</a> 
+<a class="jxr_linenumber" name="392" href="#392">392</a>         Get get = <strong class="jxr_keyword">new</strong> Get(rowName1);
+<a class="jxr_linenumber" name="393" href="#393">393</a> 
+<a class="jxr_linenumber" name="394" href="#394">394</a>         Filter filter1 = <strong class="jxr_keyword">new</strong> FilterList(FilterList.Operator.MUST_PASS_ONE,
+<a class="jxr_linenumber" name="395" href="#395">395</a>                 <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(Bytes.toBytes(TEST_FAMILY))),
+<a class="jxr_linenumber" name="396" href="#396">396</a>                 <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(famName2)));
+<a class="jxr_linenumber" name="397" href="#397">397</a> 
+<a class="jxr_linenumber" name="398" href="#398">398</a>         get.setFilter(filter1);
+<a class="jxr_linenumber" name="399" href="#399">399</a>         Result result = tt.get(tx4, get);
+<a class="jxr_linenumber" name="400" href="#400">400</a>         assertTrue(result.size() == 2, <span class="jxr_string">"Result should be 2"</span>);
+<a class="jxr_linenumber" name="401" href="#401">401</a> 
+<a class="jxr_linenumber" name="402" href="#402">402</a>         tm.commit(tx3);
+<a class="jxr_linenumber" name="403" href="#403">403</a> 
+<a class="jxr_linenumber" name="404" href="#404">404</a>         Transaction tx5 = tm.begin();
+<a class="jxr_linenumber" name="405" href="#405">405</a>         result = tt.get(tx5, get);
+<a class="jxr_linenumber" name="406" href="#406">406</a>         assertTrue(result.size() == 1, <span class="jxr_string">"Result should be 1"</span>);
+<a class="jxr_linenumber" name="407" href="#407">407</a> 
+<a class="jxr_linenumber" name="408" href="#408">408</a>         tt.close();
+<a class="jxr_linenumber" name="409" href="#409">409</a>     }
+<a class="jxr_linenumber" name="410" href="#410">410</a> 
+<a class="jxr_linenumber" name="411" href="#411">411</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="412" href="#412">412</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadFromCommitTable() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="413" href="#413">413</a>         <strong class="jxr_keyword">final</strong> byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="414" href="#414">414</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="415" href="#415">415</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="416" href="#416">416</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="417" href="#417">417</a>         <strong class="jxr_keyword">final</strong> String TEST_TABLE = <span class="jxr_string">"testReadFromCommitTable"</span>;
+<a class="jxr_linenumber" name="418" href="#418">418</a>         <strong class="jxr_keyword">final</strong> byte[] famName2 = Bytes.toBytes(<span class="jxr_string">"test-fam2"</span>);
+<a class="jxr_linenumber" name="419" href="#419">419</a> 
+<a class="jxr_linenumber" name="420" href="#420">420</a>         <strong class="jxr_keyword">final</strong> CountDownLatch readAfterCommit = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="421" href="#421">421</a>         <strong class="jxr_keyword">final</strong> CountDownLatch postCommitBegin = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="422" href="#422">422</a> 
+<a class="jxr_linenumber" name="423" href="#423">423</a>         <strong class="jxr_keyword">final</strong> AtomicBoolean readFailed = <strong class="jxr_keyword">new</strong> AtomicBoolean(false);
+<a class="jxr_linenumber" name="424" href="#424">424</a>         <strong class="jxr_keyword">final</strong> AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager();
+<a class="jxr_linenumber" name="425" href="#425">425</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY), famName2);
+<a class="jxr_linenumber" name="426" href="#426">426</a> 
+<a class="jxr_linenumber" name="427" href="#427">427</a>         doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;ListenableFuture&lt;Void&gt;&gt;() {
+<a class="jxr_linenumber" name="428" href="#428">428</a>             @Override
+<a class="jxr_linenumber" name="429" href="#429">429</a>             <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; answer(InvocationOnMock invocation) <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="430" href="#430">430</a>                 LOG.info(<span class="jxr_string">"Releasing readAfterCommit barrier"</span>);
+<a class="jxr_linenumber" name="431" href="#431">431</a>                 readAfterCommit.countDown();
+<a class="jxr_linenumber" name="432" href="#432">432</a>                 LOG.info(<span class="jxr_string">"Waiting postCommitBegin barrier"</span>);
+<a class="jxr_linenumber" name="433" href="#433">433</a>                 postCommitBegin.await();
+<a class="jxr_linenumber" name="434" href="#434">434</a>                 ListenableFuture&lt;Void&gt; result = (ListenableFuture&lt;Void&gt;) invocation.callRealMethod();
+<a class="jxr_linenumber" name="435" href="#435">435</a>                 <strong class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="436" href="#436">436</a>             }
+<a class="jxr_linenumber" name="437" href="#437">437</a>         }).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="438" href="#438">438</a> 
+<a class="jxr_linenumber" name="439" href="#439">439</a>         Thread readThread = <strong class="jxr_keyword">new</strong> Thread(<span class="jxr_string">"Read Thread"</span>) {
+<a class="jxr_linenumber" name="440" href="#440">440</a>             @Override
+<a class="jxr_linenumber" name="441" href="#441">441</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
+<a class="jxr_linenumber" name="442" href="#442">442</a> 
+<a class="jxr_linenumber" name="443" href="#443">443</a>                 <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="444" href="#444">444</a>                     LOG.info(<span class="jxr_string">"Waiting readAfterCommit barrier"</span>);
+<a class="jxr_linenumber" name="445" href="#445">445</a>                     readAfterCommit.await();
+<a class="jxr_linenumber" name="446" href="#446">446</a> 
+<a class="jxr_linenumber" name="447" href="#447">447</a>                     Transaction tx4 = tm.begin();
+<a class="jxr_linenumber" name="448" href="#448">448</a>                     TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="449" href="#449">449</a>                     Get get = <strong class="jxr_keyword">new</strong> Get(rowName1);
+<a class="jxr_linenumber" name="450" href="#450">450</a> 
+<a class="jxr_linenumber" name="451" href="#451">451</a>                     Filter filter1 = <strong class="jxr_keyword">new</strong> FilterList(FilterList.Operator.MUST_PASS_ONE,
+<a class="jxr_linenumber" name="452" href="#452">452</a>                             <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(Bytes.toBytes(TEST_FAMILY))),
+<a class="jxr_linenumber" name="453" href="#453">453</a>                             <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(famName2)));
+<a class="jxr_linenumber" name="454" href="#454">454</a> 
+<a class="jxr_linenumber" name="455" href="#455">455</a>                     get.setFilter(filter1);
+<a class="jxr_linenumber" name="456" href="#456">456</a>                     Result result = tt.get(tx4, get);
+<a class="jxr_linenumber" name="457" href="#457">457</a> 
+<a class="jxr_linenumber" name="458" href="#458">458</a>                     <strong class="jxr_keyword">if</strong> (result.size() == 2) {
+<a class="jxr_linenumber" name="459" href="#459">459</a>                         readFailed.set(false);
+<a class="jxr_linenumber" name="460" href="#460">460</a>                     }
+<a class="jxr_linenumber" name="461" href="#461">461</a>                     <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="462" href="#462">462</a>                         readFailed.set(false);
+<a class="jxr_linenumber" name="463" href="#463">463</a>                     }
+<a class="jxr_linenumber" name="464" href="#464">464</a> 
+<a class="jxr_linenumber" name="465" href="#465">465</a>                     postCommitBegin.countDown();
+<a class="jxr_linenumber" name="466" href="#466">466</a>                 } <strong class="jxr_keyword">catch</strong> (Throwable e) {
+<a class="jxr_linenumber" name="467" href="#467">467</a>                     readFailed.set(false);
+<a class="jxr_linenumber" name="468" href="#468">468</a>                     LOG.error(<span class="jxr_string">"Error whilst reading"</span>, e);
+<a class="jxr_linenumber" name="469" href="#469">469</a>                 }
+<a class="jxr_linenumber" name="470" href="#470">470</a>             }
+<a class="jxr_linenumber" name="471" href="#471">471</a>         };
+<a class="jxr_linenumber" name="472" href="#472">472</a>         readThread.start();
+<a class="jxr_linenumber" name="473" href="#473">473</a> 
+<a class="jxr_linenumber" name="474" href="#474">474</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="475" href="#475">475</a>         <strong class="jxr_keyword">final</strong> HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="476" href="#476">476</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="477" href="#477">477</a>         put1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="478" href="#478">478</a>         table.put(t1, put1);
+<a class="jxr_linenumber" name="479" href="#479">479</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="480" href="#480">480</a> 
+<a class="jxr_linenumber" name="481" href="#481">481</a>         readThread.join();
+<a class="jxr_linenumber" name="482" href="#482">482</a> 
+<a class="jxr_linenumber" name="483" href="#483">483</a>         assertFalse(readFailed.get(), <span class="jxr_string">"Read should have succeeded"</span>);
+<a class="jxr_linenumber" name="484" href="#484">484</a> 
+<a class="jxr_linenumber" name="485" href="#485">485</a>     }
+<a class="jxr_linenumber" name="486" href="#486">486</a> 
+<a class="jxr_linenumber" name="487" href="#487">487</a> 
+<a class="jxr_linenumber" name="488" href="#488">488</a> 
+<a class="jxr_linenumber" name="489" href="#489">489</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="490" href="#490">490</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetWithFilter() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="491" href="#491">491</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="492" href="#492">492</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="493" href="#493">493</a>         byte[] famName2 = Bytes.toBytes(<span class="jxr_string">"test-fam2"</span>);
+<a class="jxr_linenumber" name="494" href="#494">494</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="495" href="#495">495</a>         byte[] colName2 = Bytes.toBytes(<span class="jxr_string">"col2"</span>);
+<a class="jxr_linenumber" name="496" href="#496">496</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="497" href="#497">497</a> 
+<a class="jxr_linenumber" name="498" href="#498">498</a>         String TEST_TABLE = <span class="jxr_string">"testGetWithFilter"</span>;
+<a class="jxr_linenumber" name="499" href="#499">499</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY), famName2);
+<a class="jxr_linenumber" name="500" href="#500">500</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="501" href="#501">501</a> 
+<a class="jxr_linenumber" name="502" href="#502">502</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="503" href="#503">503</a> 
+<a class="jxr_linenumber" name="504" href="#504">504</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="505" href="#505">505</a>         put1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="506" href="#506">506</a>         tt.put(tx1, put1);
+<a class="jxr_linenumber" name="507" href="#507">507</a> 
+<a class="jxr_linenumber" name="508" href="#508">508</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="509" href="#509">509</a> 
+<a class="jxr_linenumber" name="510" href="#510">510</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="511" href="#511">511</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="512" href="#512">512</a>         put2.addColumn(famName2, colName2, dataValue1);
+<a class="jxr_linenumber" name="513" href="#513">513</a>         tt.put(tx2, put2);
+<a class="jxr_linenumber" name="514" href="#514">514</a>         tm.commit(tx2);
+<a class="jxr_linenumber" name="515" href="#515">515</a> 
+<a class="jxr_linenumber" name="516" href="#516">516</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="517" href="#517">517</a> 
+<a class="jxr_linenumber" name="518" href="#518">518</a>         Get get = <strong class="jxr_keyword">new</strong> Get(rowName1);
+<a class="jxr_linenumber" name="519" href="#519">519</a> 
+<a class="jxr_linenumber" name="520" href="#520">520</a>         Filter filter1 = <strong class="jxr_keyword">new</strong> FilterList(FilterList.Operator.MUST_PASS_ONE,
+<a class="jxr_linenumber" name="521" href="#521">521</a>                 <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(Bytes.toBytes(TEST_FAMILY))),
+<a class="jxr_linenumber" name="522" href="#522">522</a>                 <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(famName2)));
+<a class="jxr_linenumber" name="523" href="#523">523</a> 
+<a class="jxr_linenumber" name="524" href="#524">524</a>         get.setFilter(filter1);
+<a class="jxr_linenumber" name="525" href="#525">525</a>         Result result = tt.get(tx3, get);
+<a class="jxr_linenumber" name="526" href="#526">526</a>         assertTrue(result.size() == 2, <span class="jxr_string">"Result should be 2"</span>);
+<a class="jxr_linenumber" name="527" href="#527">527</a> 
+<a class="jxr_linenumber" name="528" href="#528">528</a> 
+<a class="jxr_linenumber" name="529" href="#529">529</a>         Filter filter2 = <strong class="jxr_keyword">new</strong> FilterList(FilterList.Operator.MUST_PASS_ONE,
+<a class="jxr_linenumber" name="530" href="#530">530</a>                 <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(Bytes.toBytes(TEST_FAMILY))));
+<a class="jxr_linenumber" name="531" href="#531">531</a> 
+<a class="jxr_linenumber" name="532" href="#532">532</a>         get.setFilter(filter2);
+<a class="jxr_linenumber" name="533" href="#533">533</a>         result = tt.get(tx3, get);
+<a class="jxr_linenumber" name="534" href="#534">534</a>         assertTrue(result.size() == 1, <span class="jxr_string">"Result should be 2"</span>);
+<a class="jxr_linenumber" name="535" href="#535">535</a> 
+<a class="jxr_linenumber" name="536" href="#536">536</a>         tm.commit(tx3);
+<a class="jxr_linenumber" name="537" href="#537">537</a> 
+<a class="jxr_linenumber" name="538" href="#538">538</a>         tt.close();
+<a class="jxr_linenumber" name="539" href="#539">539</a>     }
+<a class="jxr_linenumber" name="540" href="#540">540</a> 
+<a class="jxr_linenumber" name="541" href="#541">541</a> 
+<a class="jxr_linenumber" name="542" href="#542">542</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="543" href="#543">543</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetSecondResult() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="544" href="#544">544</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="545" href="#545">545</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="546" href="#546">546</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="547" href="#547">547</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="548" href="#548">548</a> 
+<a class="jxr_linenumber" name="549" href="#549">549</a>         String TEST_TABLE = <span class="jxr_string">"testGetSecondResult"</span>;
+<a class="jxr_linenumber" name="550" href="#550">550</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
+<a class="jxr_linenumber" name="551" href="#551">551</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="552" href="#552">552</a> 
+<a class="jxr_linenumber" name="553" href="#553">553</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="554" href="#554">554</a> 
+<a class="jxr_linenumber" name="555" href="#555">555</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="556" href="#556">556</a>         put1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="557" href="#557">557</a>         tt.put(tx1, put1);
+<a class="jxr_linenumber" name="558" href="#558">558</a>         
+<a class="jxr_linenumber" name="559" href="#559">559</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="560" href="#560">560</a> 
+<a class="jxr_linenumber" name="561" href="#561">561</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="562" href="#562">562</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="563" href="#563">563</a>         put2.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="564" href="#564">564</a>         tt.put(tx2, put2);
+<a class="jxr_linenumber" name="565" href="#565">565</a>         
+<a class="jxr_linenumber" name="566" href="#566">566</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="567" href="#567">567</a> 
+<a class="jxr_linenumber" name="568" href="#568">568</a>         Get get = <strong class="jxr_keyword">new</strong> Get(rowName1);
+<a class="jxr_linenumber" name="569" href="#569">569</a>         Result result = tt.get(tx3, get);
+<a class="jxr_linenumber" name="570" href="#570">570</a> 
+<a class="jxr_linenumber" name="571" href="#571">571</a>         assertTrue(!result.isEmpty(), <span class="jxr_string">"Result should not be empty!"</span>);
+<a class="jxr_linenumber" name="572" href="#572">572</a> 
+<a class="jxr_linenumber" name="573" href="#573">573</a>         <strong class="jxr_keyword">long</strong> tsRow = result.rawCells()[0].getTimestamp();
+<a class="jxr_linenumber" name="574" href="#574">574</a>         assertEquals(tsRow, tx1.getTransactionId(), <span class="jxr_string">"Reading differnt version"</span>);
+<a class="jxr_linenumber" name="575" href="#575">575</a> 
+<a class="jxr_linenumber" name="576" href="#576">576</a>         tm.commit(tx3);
+<a class="jxr_linenumber" name="577" href="#577">577</a> 
+<a class="jxr_linenumber" name="578" href="#578">578</a>         tt.close();
+<a class="jxr_linenumber" name="579" href="#579">579</a>     }
+<a class="jxr_linenumber" name="580" href="#580">580</a> 
+<a class="jxr_linenumber" name="581" href="#581">581</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="582" href="#582">582</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanFirstResult() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="583" href="#583">583</a> 
+<a class="jxr_linenumber" name="584" href="#584">584</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="585" href="#585">585</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="586" href="#586">586</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="587" href="#587">587</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="588" href="#588">588</a> 
+<a class="jxr_linenumber" name="589" href="#589">589</a>         String TEST_TABLE = <span class="jxr_string">"testScanFirstResult"</span>;
+<a class="jxr_linenumber" name="590" href="#590">590</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
+<a class="jxr_linenumber" name="591" href="#591">591</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="592" href="#592">592</a> 
+<a class="jxr_linenumber" name="593" href="#593">593</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="594" href="#594">594</a> 
+<a class="jxr_linenumber" name="595" href="#595">595</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="596" href="#596">596</a>         row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="597" href="#597">597</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="598" href="#598">598</a> 
+<a class="jxr_linenumber" name="599" href="#599">599</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="600" href="#600">600</a> 
+<a class="jxr_linenumber" name="601" href="#601">601</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="602" href="#602">602</a> 
+<a class="jxr_linenumber" name="603" href="#603">603</a>         ResultScanner iterableRS = tt.getScanner(tx2, <strong class="jxr_keyword">new</strong> Scan().setStartRow(rowName1).setStopRow(rowName1));
+<a class="jxr_linenumber" name="604" href="#604">604</a>         Result result = iterableRS.next();
+<a class="jxr_linenumber" name="605" href="#605">605</a>         <strong class="jxr_keyword">long</strong> tsRow = result.rawCells()[0].getTimestamp();
+<a class="jxr_linenumber" name="606" href="#606">606</a>         assertEquals(tsRow, tx1.getTransactionId(), <span class="jxr_string">"Reading differnt version"</span>);
+<a class="jxr_linenumber" name="607" href="#607">607</a> 
+<a class="jxr_linenumber" name="608" href="#608">608</a>         assertFalse(iterableRS.next() != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="609" href="#609">609</a> 
+<a class="jxr_linenumber" name="610" href="#610">610</a>         tm.commit(tx2);
+<a class="jxr_linenumber" name="611" href="#611">611</a> 
+<a class="jxr_linenumber" name="612" href="#612">612</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="613" href="#613">613</a> 
+<a class="jxr_linenumber" name="614" href="#614">614</a>         Put put3 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="615" href="#615">615</a>         put3.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="616" href="#616">616</a>         tt.put(tx3, put3);
+<a class="jxr_linenumber" name="617" href="#617">617</a> 
+<a class="jxr_linenumber" name="618" href="#618">618</a>         tm.commit(tx3);
+<a class="jxr_linenumber" name="619" href="#619">619</a> 
+<a class="jxr_linenumber" name="620" href="#620">620</a>         Transaction tx4 = tm.begin();
+<a class="jxr_linenumber" name="621" href="#621">621</a> 
+<a class="jxr_linenumber" name="622" href="#622">622</a>         ResultScanner iterableRS2 = tt.getScanner(tx4, <strong class="jxr_keyword">new</strong> Scan().setStartRow(rowName1).setStopRow(rowName1));
+<a class="jxr_linenumber" name="623" href="#623">623</a>         Result result2 = iterableRS2.next();
+<a class="jxr_linenumber" name="624" href="#624">624</a>         <strong class="jxr_keyword">long</strong> tsRow2 = result2.rawCells()[0].getTimestamp();
+<a class="jxr_linenumber" name="625" href="#625">625</a>         assertEquals(tsRow2, tx3.getTransactionId(), <span class="jxr_string">"Reading differnt version"</span>);
+<a class="jxr_linenumber" name="626" href="#626">626</a> 
+<a class="jxr_linenumber" name="627" href="#627">627</a>         assertFalse(iterableRS2.next() != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="628" href="#628">628</a> 
+<a class="jxr_linenumber" name="629" href="#629">629</a>         tm.commit(tx4);
+<a class="jxr_linenumber" name="630" href="#630">630</a>         tt.close();
+<a class="jxr_linenumber" name="631" href="#631">631</a>     }
+<a class="jxr_linenumber" name="632" href="#632">632</a> 
+<a class="jxr_linenumber" name="633" href="#633">633</a> 
+<a class="jxr_linenumber" name="634" href="#634">634</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="635" href="#635">635</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanWithFilter() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="636" href="#636">636</a> 
+<a class="jxr_linenumber" name="637" href="#637">637</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="638" href="#638">638</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="639" href="#639">639</a>         byte[] famName2 = Bytes.toBytes(<span class="jxr_string">"test-fam2"</span>);
+<a class="jxr_linenumber" name="640" href="#640">640</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="641" href="#641">641</a>         byte[] colName2 = Bytes.toBytes(<span class="jxr_string">"col2"</span>);
+<a class="jxr_linenumber" name="642" href="#642">642</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="643" href="#643">643</a> 
+<a class="jxr_linenumber" name="644" href="#644">644</a>         String TEST_TABLE = <span class="jxr_string">"testScanWithFilter"</span>;
+<a class="jxr_linenumber" name="645" href="#645">645</a>         createTableIfNotExists(TEST_TABLE, famName1, famName2);
+<a class="jxr_linenumber" name="646" href="#646">646</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="647" href="#647">647</a> 
+<a class="jxr_linenumber" name="648" href="#648">648</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="649" href="#649">649</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="650" href="#650">650</a>         put1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="651" href="#651">651</a>         tt.put(tx1, put1);
+<a class="jxr_linenumber" name="652" href="#652">652</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="653" href="#653">653</a> 
+<a class="jxr_linenumber" name="654" href="#654">654</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="655" href="#655">655</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="656" href="#656">656</a>         put2.addColumn(famName2, colName2, dataValue1);
+<a class="jxr_linenumber" name="657" href="#657">657</a>         tt.put(tx2, put2);
+<a class="jxr_linenumber" name="658" href="#658">658</a> 
+<a class="jxr_linenumber" name="659" href="#659">659</a>         tm.commit(tx2);
+<a class="jxr_linenumber" name="660" href="#660">660</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="661" href="#661">661</a> 
+<a class="jxr_linenumber" name="662" href="#662">662</a>         Scan scan = <strong class="jxr_keyword">new</strong> Scan();
+<a class="jxr_linenumber" name="663" href="#663">663</a>         scan.setFilter(<strong class="jxr_keyword">new</strong> FilterList(FilterList.Operator.MUST_PASS_ONE,
+<a class="jxr_linenumber" name="664" href="#664">664</a>                 <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(Bytes.toBytes(TEST_FAMILY)))));
+<a class="jxr_linenumber" name="665" href="#665">665</a>         scan.setStartRow(rowName1).setStopRow(rowName1);
+<a class="jxr_linenumber" name="666" href="#666">666</a> 
+<a class="jxr_linenumber" name="667" href="#667">667</a>         ResultScanner iterableRS = tt.getScanner(tx3, scan);
+<a class="jxr_linenumber" name="668" href="#668">668</a>         Result result = iterableRS.next();
+<a class="jxr_linenumber" name="669" href="#669">669</a>         assertTrue(result.containsColumn(famName1, colName1));
+<a class="jxr_linenumber" name="670" href="#670">670</a>         assertFalse(result.containsColumn(famName2, colName2));
+<a class="jxr_linenumber" name="671" href="#671">671</a> 
+<a class="jxr_linenumber" name="672" href="#672">672</a>         scan.setFilter(<strong class="jxr_keyword">new</strong> FilterList(FilterList.Operator.MUST_PASS_ONE,
+<a class="jxr_linenumber" name="673" href="#673">673</a>                 <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(Bytes.toBytes(TEST_FAMILY))),
+<a class="jxr_linenumber" name="674" href="#674">674</a>                 <strong class="jxr_keyword">new</strong> FamilyFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(famName2))));
+<a class="jxr_linenumber" name="675" href="#675">675</a> 
+<a class="jxr_linenumber" name="676" href="#676">676</a>         iterableRS = tt.getScanner(tx3, scan);
+<a class="jxr_linenumber" name="677" href="#677">677</a>         result = iterableRS.next();
+<a class="jxr_linenumber" name="678" href="#678">678</a>         assertTrue(result.containsColumn(famName1, colName1));
+<a class="jxr_linenumber" name="679" href="#679">679</a>         assertTrue(result.containsColumn(famName2, colName2));
+<a class="jxr_linenumber" name="680" href="#680">680</a> 
+<a class="jxr_linenumber" name="681" href="#681">681</a>         tm.commit(tx3);
+<a class="jxr_linenumber" name="682" href="#682">682</a>         tt.close();
+<a class="jxr_linenumber" name="683" href="#683">683</a>     }
+<a class="jxr_linenumber" name="684" href="#684">684</a> 
+<a class="jxr_linenumber" name="685" href="#685">685</a> 
+<a class="jxr_linenumber" name="686" href="#686">686</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="687" href="#687">687</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanSecondResult() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="688" href="#688">688</a> 
+<a class="jxr_linenumber" name="689" href="#689">689</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="690" href="#690">690</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="691" href="#691">691</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="692" href="#692">692</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="693" href="#693">693</a> 
+<a class="jxr_linenumber" name="694" href="#694">694</a>         String TEST_TABLE = <span class="jxr_string">"testScanSecondResult"</span>;
+<a class="jxr_linenumber" name="695" href="#695">695</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
+<a class="jxr_linenumber" name="696" href="#696">696</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="697" href="#697">697</a> 
+<a class="jxr_linenumber" name="698" href="#698">698</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="699" href="#699">699</a> 
+<a class="jxr_linenumber" name="700" href="#700">700</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="701" href="#701">701</a>         put1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="702" href="#702">702</a>         tt.put(tx1, put1);
+<a class="jxr_linenumber" name="703" href="#703">703</a> 
+<a class="jxr_linenumber" name="704" href="#704">704</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="705" href="#705">705</a> 
+<a class="jxr_linenumber" name="706" href="#706">706</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="707" href="#707">707</a> 
+<a class="jxr_linenumber" name="708" href="#708">708</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="709" href="#709">709</a>         put2.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="710" href="#710">710</a>         tt.put(tx2, put2);
+<a class="jxr_linenumber" name="711" href="#711">711</a> 
+<a class="jxr_linenumber" name="712" href="#712">712</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="713" href="#713">713</a> 
+<a class="jxr_linenumber" name="714" href="#714">714</a>         ResultScanner iterableRS = tt.getScanner(tx3, <strong class="jxr_keyword">new</strong> Scan().setStartRow(rowName1).setStopRow(rowName1));
+<a class="jxr_linenumber" name="715" href="#715">715</a>         Result result = iterableRS.next();
+<a class="jxr_linenumber" name="716" href="#716">716</a>         <strong class="jxr_keyword">long</strong> tsRow = result.rawCells()[0].getTimestamp();
+<a class="jxr_linenumber" name="717" href="#717">717</a>         assertEquals(tsRow, tx1.getTransactionId(), <span class="jxr_string">"Reading differnt version"</span>);
+<a class="jxr_linenumber" name="718" href="#718">718</a> 
+<a class="jxr_linenumber" name="719" href="#719">719</a>         assertFalse(iterableRS.next() != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="720" href="#720">720</a> 
+<a class="jxr_linenumber" name="721" href="#721">721</a>         tm.commit(tx3);
+<a class="jxr_linenumber" name="722" href="#722">722</a> 
+<a class="jxr_linenumber" name="723" href="#723">723</a>         tt.close();
+<a class="jxr_linenumber" name="724" href="#724">724</a>     }
+<a class="jxr_linenumber" name="725" href="#725">725</a> 
+<a class="jxr_linenumber" name="726" href="#726">726</a>     @Test (timeOut = 60_000)
+<a class="jxr_linenumber" name="727" href="#727">727</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanFewResults() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="728" href="#728">728</a> 
+<a class="jxr_linenumber" name="729" href="#729">729</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="730" href="#730">730</a>         byte[] rowName2 = Bytes.toBytes(<span class="jxr_string">"row2"</span>);
+<a class="jxr_linenumber" name="731" href="#731">731</a>         byte[] rowName3 = Bytes.toBytes(<span class="jxr_string">"row3"</span>);
+<a class="jxr_linenumber" name="732" href="#732">732</a>         byte[] famName = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="733" href="#733">733</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="734" href="#734">734</a>         byte[] colName2 = Bytes.toBytes(<span class="jxr_string">"col2"</span>);
+<a class="jxr_linenumber" name="735" href="#735">735</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="736" href="#736">736</a>         byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="737" href="#737">737</a> 
+<a class="jxr_linenumber" name="738" href="#738">738</a>         String TEST_TABLE = <span class="jxr_string">"testScanFewResults"</span>;
+<a class="jxr_linenumber" name="739" href="#739">739</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
+<a class="jxr_linenumber" name="740" href="#740">740</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="741" href="#741">741</a> 
+<a class="jxr_linenumber" name="742" href="#742">742</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="743" href="#743">743</a> 
+<a class="jxr_linenumber" name="744" href="#744">744</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="745" href="#745">745</a>         put1.addColumn(famName, colName1, dataValue1);
+<a class="jxr_linenumber" name="746" href="#746">746</a>         tt.put(tx1, put1);
+<a class="jxr_linenumber" name="747" href="#747">747</a> 
+<a class="jxr_linenumber" name="748" href="#748">748</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="749" href="#749">749</a> 
+<a class="jxr_linenumber" name="750" href="#750">750</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="751" href="#751">751</a> 
+<a class="jxr_linenumber" name="752" href="#752">752</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowName2);
+<a class="jxr_linenumber" name="753" href="#753">753</a>         put2.addColumn(famName, colName2, dataValue2);
+<a class="jxr_linenumber" name="754" href="#754">754</a>         tt.put(tx2, put2);
+<a class="jxr_linenumber" name="755" href="#755">755</a> 
+<a class="jxr_linenumber" name="756" href="#756">756</a>         tm.commit(tx2);
+<a class="jxr_linenumber" name="757" href="#757">757</a> 
+<a class="jxr_linenumber" name="758" href="#758">758</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="759" href="#759">759</a> 
+<a class="jxr_linenumber" name="760" href="#760">760</a>         ResultScanner iterableRS = tt.getScanner(tx3, <strong class="jxr_keyword">new</strong> Scan().setStartRow(rowName1).setStopRow(rowName3));
+<a class="jxr_linenumber" name="761" href="#761">761</a>         Result result = iterableRS.next();
+<a class="jxr_linenumber" name="762" href="#762">762</a>         <strong class="jxr_keyword">long</strong> tsRow = result.rawCells()[0].getTimestamp();
+<a class="jxr_linenumber" name="763" href="#763">763</a>         assertEquals(tsRow, tx1.getTransactionId(), <span class="jxr_string">"Reading differnt version"</span>);
+<a class="jxr_linenumber" name="764" href="#764">764</a> 
+<a class="jxr_linenumber" name="765" href="#765">765</a>         result = iterableRS.next();
+<a class="jxr_linenumber" name="766" href="#766">766</a>         tsRow = result.rawCells()[0].getTimestamp();
+<a class="jxr_linenumber" name="767" href="#767">767</a>         assertEquals(tsRow, tx2.getTransactionId(), <span class="jxr_string">"Reading differnt version"</span>);
+<a class="jxr_linenumber" name="768" href="#768">768</a> 
+<a class="jxr_linenumber" name="769" href="#769">769</a>         assertFalse(iterableRS.next() != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="770" href="#770">770</a> 
+<a class="jxr_linenumber" name="771" href="#771">771</a>         tm.commit(tx3);
+<a class="jxr_linenumber" name="772" href="#772">772</a> 
+<a class="jxr_linenumber" name="773" href="#773">773</a>         tt.close();
+<a class="jxr_linenumber" name="774" href="#774">774</a>     }
+<a class="jxr_linenumber" name="775" href="#775">775</a> 
+<a class="jxr_linenumber" name="776" href="#776">776</a>     @Test (timeOut = 60_000)
+<a class="jxr_linenumber" name="777" href="#777">777</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanFewResultsDifferentTransaction() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="778" href="#778">778</a> 
+<a class="jxr_linenumber" name="779" href="#779">779</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="780" href="#780">780</a>         byte[] rowName2 = Bytes.toBytes(<span class="jxr_string">"row2"</span>);
+<a class="jxr_linenumber" name="78

<TRUNCATED>


[18/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/committable/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/committable/hbase/package-frame.html b/xref/org/apache/omid/committable/hbase/package-frame.html
index c3a1fff..6ee11e6 100644
--- a/xref/org/apache/omid/committable/hbase/package-frame.html
+++ b/xref/org/apache/omid/committable/hbase/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.committable.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.committable.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/committable/hbase/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/committable/hbase/package-summary.html b/xref/org/apache/omid/committable/hbase/package-summary.html
index 8131467..82e5907 100644
--- a/xref/org/apache/omid/committable/hbase/package-summary.html
+++ b/xref/org/apache/omid/committable/hbase/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.committable.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.committable.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/committable/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/committable/package-frame.html b/xref/org/apache/omid/committable/package-frame.html
index 2e3a8e6..4f25f85 100644
--- a/xref/org/apache/omid/committable/package-frame.html
+++ b/xref/org/apache/omid/committable/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.committable</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.committable</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/committable/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/committable/package-summary.html b/xref/org/apache/omid/committable/package-summary.html
index 41d573c..1705ed3 100644
--- a/xref/org/apache/omid/committable/package-summary.html
+++ b/xref/org/apache/omid/committable/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.committable</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.committable</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/examples/BasicExample.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/examples/BasicExample.html b/xref/org/apache/omid/examples/BasicExample.html
index fb3612b..1300c14 100644
--- a/xref/org/apache/omid/examples/BasicExample.html
+++ b/xref/org/apache/omid/examples/BasicExample.html
@@ -27,99 +27,102 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.examples;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TTable;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TransactionManager;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************</em>
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * Example code which demonstrates an atomic write into two different rows in HBase</em>
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TTable;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TransactionManager;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************</em>
 <a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************</em>
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * Example code which demonstrates an atomic write into two different rows in HBase</em>
 <a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * After building the package with 'mvn clean package' find the resulting examples-{version}-bin.tar.gz file in the</em>
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> * 'examples/target' folder. Copy it to the target host and expand with 'tar -zxvf examples-{version}-bin.tar.gz'.</em>
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * Make sure that 'hbase-site.xml' and 'core-site.xml' are either in classpath (see run.sh) or explicitly referenced in</em>
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * configuration file. If a secure HBase deployment is needed, make sure to specify the principal (user) and keytab file.</em>
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * The example requires a user table to perform transactional read/write operations. A table is already specified in</em>
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * the default configuration, and can be created with the following command using the 'hbase shell':</em>
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * create 'MY_TX_TABLE', {NAME =&amp;gt; 'MY_CF', VERSIONS =&amp;gt; '2147483647', TTL =&amp;gt; '2147483647'}</em>
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * Make sure that the principal/user has RW permissions for the given table using also the 'hbase shell':</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * grant '{principal/user}', 'RW', 'MY_TX_TABLE'</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * Alternatively, a table with a column family already created can be used by specifying the table name and column</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * family identifiers using the command line arguments (see details also in 'run.sh') If a table namespace is required,</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * specify it like this: 'namespace:table_name'</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * Finally, run the example using the 'run.sh' script without arguments or specifying the necessary configuration</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * parameters.</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/examples/BasicExample.html">BasicExample</a> {
-<a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(BasicExample.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************</em>
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * After building the package with 'mvn clean package' find the resulting examples-{version}-bin.tar.gz file in the</em>
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * 'examples/target' folder. Copy it to the target host and expand with 'tar -zxvf examples-{version}-bin.tar.gz'.</em>
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * Make sure that 'hbase-site.xml' and 'core-site.xml' are either in classpath (see run.sh) or explicitly referenced in</em>
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * configuration file. If a secure HBase deployment is needed, make sure to specify the principal (user) and keytab file.</em>
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * The example requires a user table to perform transactional read/write operations. A table is already specified in</em>
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * the default configuration, and can be created with the following command using the 'hbase shell':</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * create 'MY_TX_TABLE', {NAME =&amp;gt; 'MY_CF', VERSIONS =&amp;gt; '2147483647', TTL =&amp;gt; '2147483647'}</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * Make sure that the principal/user has RW permissions for the given table using also the 'hbase shell':</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * &lt;pre&gt;</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * grant '{principal/user}', 'RW', 'MY_TX_TABLE'</em>
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * &lt;/pre&gt;</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * Alternatively, a table with a column family already created can be used by specifying the table name and column</em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * family identifiers using the command line arguments (see details also in 'run.sh') If a table namespace is required,</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * specify it like this: 'namespace:table_name'</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> * Finally, run the example using the 'run.sh' script without arguments or specifying the necessary configuration</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * parameters.</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/examples/BasicExample.html">BasicExample</a> {
 <a class="jxr_linenumber" name="65" href="#65">65</a>  
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(BasicExample.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="67" href="#67">67</a>  
-<a class="jxr_linenumber" name="68" href="#68">68</a>          LOG.info(<span class="jxr_string">"Parsing command line arguments"</span>);
-<a class="jxr_linenumber" name="69" href="#69">69</a>          String userTableName = <span class="jxr_string">"MY_TX_TABLE"</span>;
-<a class="jxr_linenumber" name="70" href="#70">70</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 0 &amp;&amp; StringUtils.isNotEmpty(args[0])) {
-<a class="jxr_linenumber" name="71" href="#71">71</a>              userTableName = args[0];
-<a class="jxr_linenumber" name="72" href="#72">72</a>          }
-<a class="jxr_linenumber" name="73" href="#73">73</a>          byte[] family = Bytes.toBytes(<span class="jxr_string">"MY_CF"</span>);
-<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 1 &amp;&amp; StringUtils.isNotEmpty(args[1])) {
-<a class="jxr_linenumber" name="75" href="#75">75</a>              family = Bytes.toBytes(args[1]);
-<a class="jxr_linenumber" name="76" href="#76">76</a>          }
-<a class="jxr_linenumber" name="77" href="#77">77</a>          LOG.info(<span class="jxr_string">"Table '{}', column family '{}'"</span>, userTableName, Bytes.toString(family));
-<a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>          byte[] exampleRow1 = Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW1"</span>);
-<a class="jxr_linenumber" name="80" href="#80">80</a>          byte[] exampleRow2 = Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW2"</span>);
-<a class="jxr_linenumber" name="81" href="#81">81</a>          byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"MY_Q"</span>);
-<a class="jxr_linenumber" name="82" href="#82">82</a>          byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"val1"</span>);
-<a class="jxr_linenumber" name="83" href="#83">83</a>          byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"val2"</span>);
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>          LOG.info(<span class="jxr_string">"Creating access to Omid Transaction Manager &amp; Transactional Table '{}'"</span>, userTableName);
-<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">try</strong> (TransactionManager tm = HBaseTransactionManager.newInstance();
-<a class="jxr_linenumber" name="87" href="#87">87</a>               <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> txTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(userTableName))
-<a class="jxr_linenumber" name="88" href="#88">88</a>          {
-<a class="jxr_linenumber" name="89" href="#89">89</a>              <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx = tm.begin();
-<a class="jxr_linenumber" name="90" href="#90">90</a>              LOG.info(<span class="jxr_string">"Transaction {} STARTED"</span>, tx);
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>              Put row1 = <strong class="jxr_keyword">new</strong> Put(exampleRow1);
-<a class="jxr_linenumber" name="93" href="#93">93</a>              row1.add(family, qualifier, dataValue1);
-<a class="jxr_linenumber" name="94" href="#94">94</a>              txTable.put(tx, row1);
-<a class="jxr_linenumber" name="95" href="#95">95</a>              LOG.info(<span class="jxr_string">"Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} "</span>,
-<a class="jxr_linenumber" name="96" href="#96">96</a>                       tx, userTableName, Bytes.toString(exampleRow1), Bytes.toString(family),
-<a class="jxr_linenumber" name="97" href="#97">97</a>                       Bytes.toString(qualifier), Bytes.toString(dataValue1));
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>              Put row2 = <strong class="jxr_keyword">new</strong> Put(exampleRow2);
-<a class="jxr_linenumber" name="100" href="#100">100</a>             row2.add(family, qualifier, dataValue2);
-<a class="jxr_linenumber" name="101" href="#101">101</a>             txTable.put(tx, row2);
-<a class="jxr_linenumber" name="102" href="#102">102</a>             LOG.info(<span class="jxr_string">"Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} "</span>,
-<a class="jxr_linenumber" name="103" href="#103">103</a>                      tx, userTableName, Bytes.toString(exampleRow2), Bytes.toString(family),
-<a class="jxr_linenumber" name="104" href="#104">104</a>                      Bytes.toString(qualifier), Bytes.toString(dataValue2));
-<a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>             tm.commit(tx);
-<a class="jxr_linenumber" name="107" href="#107">107</a>             LOG.info(<span class="jxr_string">"Transaction {} COMMITTED"</span>, tx);
-<a class="jxr_linenumber" name="108" href="#108">108</a>         }
-<a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>     }
-<a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a> }
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>          LOG.info(<span class="jxr_string">"Parsing command line arguments"</span>);
+<a class="jxr_linenumber" name="71" href="#71">71</a>          String userTableName = <span class="jxr_string">"MY_TX_TABLE"</span>;
+<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 0 &amp;&amp; StringUtils.isNotEmpty(args[0])) {
+<a class="jxr_linenumber" name="73" href="#73">73</a>              userTableName = args[0];
+<a class="jxr_linenumber" name="74" href="#74">74</a>          }
+<a class="jxr_linenumber" name="75" href="#75">75</a>          byte[] family = Bytes.toBytes(<span class="jxr_string">"MY_CF"</span>);
+<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 1 &amp;&amp; StringUtils.isNotEmpty(args[1])) {
+<a class="jxr_linenumber" name="77" href="#77">77</a>              family = Bytes.toBytes(args[1]);
+<a class="jxr_linenumber" name="78" href="#78">78</a>          }
+<a class="jxr_linenumber" name="79" href="#79">79</a>          LOG.info(<span class="jxr_string">"Table '{}', column family '{}'"</span>, userTableName, Bytes.toString(family));
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>          byte[] exampleRow1 = Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW1"</span>);
+<a class="jxr_linenumber" name="82" href="#82">82</a>          byte[] exampleRow2 = Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW2"</span>);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"MY_Q"</span>);
+<a class="jxr_linenumber" name="84" href="#84">84</a>          byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"val1"</span>);
+<a class="jxr_linenumber" name="85" href="#85">85</a>          byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"val2"</span>);
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>          LOG.info(<span class="jxr_string">"Creating access to Omid Transaction Manager &amp; Transactional Table '{}'"</span>, userTableName);
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <strong class="jxr_keyword">try</strong> (TransactionManager tm = HBaseTransactionManager.newInstance();
+<a class="jxr_linenumber" name="89" href="#89">89</a>               Connection conn = ConnectionFactory.createConnection();
+<a class="jxr_linenumber" name="90" href="#90">90</a>               <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> txTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(conn, userTableName))
+<a class="jxr_linenumber" name="91" href="#91">91</a>          {
+<a class="jxr_linenumber" name="92" href="#92">92</a>              <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx = tm.begin();
+<a class="jxr_linenumber" name="93" href="#93">93</a>              LOG.info(<span class="jxr_string">"Transaction {} STARTED"</span>, tx);
+<a class="jxr_linenumber" name="94" href="#94">94</a>  
+<a class="jxr_linenumber" name="95" href="#95">95</a>              Put row1 = <strong class="jxr_keyword">new</strong> Put(exampleRow1);
+<a class="jxr_linenumber" name="96" href="#96">96</a>              row1.addColumn(family, qualifier, dataValue1);
+<a class="jxr_linenumber" name="97" href="#97">97</a>              txTable.put(tx, row1);
+<a class="jxr_linenumber" name="98" href="#98">98</a>              LOG.info(<span class="jxr_string">"Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} "</span>,
+<a class="jxr_linenumber" name="99" href="#99">99</a>                       tx, userTableName, Bytes.toString(exampleRow1), Bytes.toString(family),
+<a class="jxr_linenumber" name="100" href="#100">100</a>                      Bytes.toString(qualifier), Bytes.toString(dataValue1));
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>             Put row2 = <strong class="jxr_keyword">new</strong> Put(exampleRow2);
+<a class="jxr_linenumber" name="103" href="#103">103</a>             row2.addColumn(family, qualifier, dataValue2);
+<a class="jxr_linenumber" name="104" href="#104">104</a>             txTable.put(tx, row2);
+<a class="jxr_linenumber" name="105" href="#105">105</a>             LOG.info(<span class="jxr_string">"Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} "</span>,
+<a class="jxr_linenumber" name="106" href="#106">106</a>                      tx, userTableName, Bytes.toString(exampleRow2), Bytes.toString(family),
+<a class="jxr_linenumber" name="107" href="#107">107</a>                      Bytes.toString(qualifier), Bytes.toString(dataValue2));
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>             tm.commit(tx);
+<a class="jxr_linenumber" name="110" href="#110">110</a>             LOG.info(<span class="jxr_string">"Transaction {} COMMITTED"</span>, tx);
+<a class="jxr_linenumber" name="111" href="#111">111</a>         }
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>     }
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/examples/ConfigurationExample.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/examples/ConfigurationExample.html b/xref/org/apache/omid/examples/ConfigurationExample.html
index ce22933..2180704 100644
--- a/xref/org/apache/omid/examples/ConfigurationExample.html
+++ b/xref/org/apache/omid/examples/ConfigurationExample.html
@@ -27,117 +27,120 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.examples;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseOmidClientConfiguration;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.RollbackException;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TTable;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TransactionManager;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConnType.DIRECT;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
 <a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
 <a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConnType.DIRECT;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************************</em>
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> *  This example code demonstrates different ways to configure the Omid client settings for HBase</em>
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseOmidClientConfiguration;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.RollbackException;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TTable;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TransactionManager;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************************</em>
 <a class="jxr_linenumber" name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************************</em>
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> *  This example code demonstrates different ways to configure the Omid client settings for HBase</em>
 <a class="jxr_linenumber" name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * Please @see{BasicExample} first on how to use with all default settings</em>
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * ****************************************************************************************************************</em>
 <a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/examples/ConfigurationExample.html">ConfigurationExample</a> {
-<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(ConfigurationExample.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="48" href="#48">48</a>  
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * Please @see{BasicExample} first on how to use with all default settings</em>
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/examples/ConfigurationExample.html">ConfigurationExample</a> {
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(ConfigurationExample.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>          LOG.info(<span class="jxr_string">"Parsing command line arguments"</span>);
-<a class="jxr_linenumber" name="52" href="#52">52</a>          String userTableName = <span class="jxr_string">"MY_TX_TABLE"</span>;
-<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 0 &amp;&amp; StringUtils.isNotEmpty(args[0])) {
-<a class="jxr_linenumber" name="54" href="#54">54</a>              userTableName = args[0];
-<a class="jxr_linenumber" name="55" href="#55">55</a>          }
-<a class="jxr_linenumber" name="56" href="#56">56</a>          byte[] family = Bytes.toBytes(<span class="jxr_string">"MY_CF"</span>);
-<a class="jxr_linenumber" name="57" href="#57">57</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 1 &amp;&amp; StringUtils.isNotEmpty(args[1])) {
-<a class="jxr_linenumber" name="58" href="#58">58</a>              family = Bytes.toBytes(args[1]);
-<a class="jxr_linenumber" name="59" href="#59">59</a>          }
-<a class="jxr_linenumber" name="60" href="#60">60</a>          LOG.info(<span class="jxr_string">"Table '{}', column family '{}'"</span>, userTableName, Bytes.toString(family));
-<a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>          <a href="../../../../org/apache/omid/examples/ConfigurationExample.html">ConfigurationExample</a> example = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/examples/ConfigurationExample.html">ConfigurationExample</a>();
+<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>          LOG.info(<span class="jxr_string">"Parsing command line arguments"</span>);
+<a class="jxr_linenumber" name="54" href="#54">54</a>          String userTableName = <span class="jxr_string">"MY_TX_TABLE"</span>;
+<a class="jxr_linenumber" name="55" href="#55">55</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 0 &amp;&amp; StringUtils.isNotEmpty(args[0])) {
+<a class="jxr_linenumber" name="56" href="#56">56</a>              userTableName = args[0];
+<a class="jxr_linenumber" name="57" href="#57">57</a>          }
+<a class="jxr_linenumber" name="58" href="#58">58</a>          byte[] family = Bytes.toBytes(<span class="jxr_string">"MY_CF"</span>);
+<a class="jxr_linenumber" name="59" href="#59">59</a>          <strong class="jxr_keyword">if</strong> (args != <strong class="jxr_keyword">null</strong> &amp;&amp; args.length &gt; 1 &amp;&amp; StringUtils.isNotEmpty(args[1])) {
+<a class="jxr_linenumber" name="60" href="#60">60</a>              family = Bytes.toBytes(args[1]);
+<a class="jxr_linenumber" name="61" href="#61">61</a>          }
+<a class="jxr_linenumber" name="62" href="#62">62</a>          LOG.info(<span class="jxr_string">"Table '{}', column family '{}'"</span>, userTableName, Bytes.toString(family));
 <a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>          <em class="jxr_comment">// -----------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>          <em class="jxr_comment">// Omid client settings configuration through the 'hbase-omid-client-config.yml' configuration file</em>
+<a class="jxr_linenumber" name="64" href="#64">64</a>          <a href="../../../../org/apache/omid/examples/ConfigurationExample.html">ConfigurationExample</a> example = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/examples/ConfigurationExample.html">ConfigurationExample</a>();
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
 <a class="jxr_linenumber" name="66" href="#66">66</a>          <em class="jxr_comment">// -----------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>          <em class="jxr_comment">// The HBaseOmidClientConfiguration loads defaults from 'default-hbase-omid-client-config.yml'</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>          <em class="jxr_comment">// and then also applies settings from 'hbase-omid-client-config.yml' if it's available in the classpath.</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>          <em class="jxr_comment">// In the code snippet below, the user settings are loaded from the 'hbase-omid-client-config.yml' file in</em>
-<a class="jxr_linenumber" name="70" href="#70">70</a>          <em class="jxr_comment">// the /conf directory that is included in the example classpath (See run.sh.) You can modify the Omid client</em>
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <em class="jxr_comment">// settings there or you can place your own 'hbase-omid-client-config.yml' file with all your custom settings</em>
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <em class="jxr_comment">// in the application classpath.</em>
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>          example.doWork(userTableName, family, <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>());
+<a class="jxr_linenumber" name="67" href="#67">67</a>          <em class="jxr_comment">// Omid client settings configuration through the 'hbase-omid-client-config.yml' configuration file</em>
+<a class="jxr_linenumber" name="68" href="#68">68</a>          <em class="jxr_comment">// -----------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="69" href="#69">69</a>          <em class="jxr_comment">// The HBaseOmidClientConfiguration loads defaults from 'default-hbase-omid-client-config.yml'</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>          <em class="jxr_comment">// and then also applies settings from 'hbase-omid-client-config.yml' if it's available in the classpath.</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <em class="jxr_comment">// In the code snippet below, the user settings are loaded from the 'hbase-omid-client-config.yml' file in</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>          <em class="jxr_comment">// the /conf directory that is included in the example classpath (See run.sh.) You can modify the Omid client</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>          <em class="jxr_comment">// settings there or you can place your own 'hbase-omid-client-config.yml' file with all your custom settings</em>
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <em class="jxr_comment">// in the application classpath.</em>
 <a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <em class="jxr_comment">// -----------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="77" href="#77">77</a>          <em class="jxr_comment">// Omid client settings configuration from application code</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>          example.doWork(userTableName, family, <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>());
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
 <a class="jxr_linenumber" name="78" href="#78">78</a>          <em class="jxr_comment">// -----------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="79" href="#79">79</a>          <em class="jxr_comment">// You can also configure Omid programmatically from your code. This is useful for example in unit tests.</em>
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <em class="jxr_comment">// The HBaseOmidClientConfiguration still loads defaults from 'default-hbase-omid-client-config.yml' first,</em>
-<a class="jxr_linenumber" name="81" href="#81">81</a>          <em class="jxr_comment">// and then applies settings from 'hbase-omid-client-config.yml' if it's available and then use explicit</em>
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <em class="jxr_comment">// settings in the code. An example of an explicit Omid client configuration in code is shown below.</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>          <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> omidClientConfiguration = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>();
-<a class="jxr_linenumber" name="85" href="#85">85</a>          omidClientConfiguration.setConnectionType(DIRECT);
-<a class="jxr_linenumber" name="86" href="#86">86</a>          omidClientConfiguration.setConnectionString(<span class="jxr_string">"localhost:54758"</span>);
-<a class="jxr_linenumber" name="87" href="#87">87</a>          omidClientConfiguration.setRetryDelayInMs(3000);
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>          example.doWork(userTableName, family, omidClientConfiguration);
-<a class="jxr_linenumber" name="90" href="#90">90</a>      }
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> doWork(String userTableName, byte[] family, <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> configuration)
-<a class="jxr_linenumber" name="93" href="#93">93</a>              <strong class="jxr_keyword">throws</strong> IOException, RollbackException, InterruptedException {
-<a class="jxr_linenumber" name="94" href="#94">94</a>  
-<a class="jxr_linenumber" name="95" href="#95">95</a>          byte[] exampleRow1 = Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW1"</span>);
-<a class="jxr_linenumber" name="96" href="#96">96</a>          byte[] exampleRow2 = Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW2"</span>);
-<a class="jxr_linenumber" name="97" href="#97">97</a>          byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"MY_Q"</span>);
-<a class="jxr_linenumber" name="98" href="#98">98</a>          byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"val1"</span>);
-<a class="jxr_linenumber" name="99" href="#99">99</a>          byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"val2"</span>);
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>         LOG.info(<span class="jxr_string">"Creating access to Omid Transaction Manager &amp; Transactional Table '{}'"</span>, userTableName);
-<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">try</strong> (TransactionManager tm = HBaseTransactionManager.newInstance(configuration);
-<a class="jxr_linenumber" name="103" href="#103">103</a>              <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> txTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(userTableName))
-<a class="jxr_linenumber" name="104" href="#104">104</a>         {
-<a class="jxr_linenumber" name="105" href="#105">105</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 100; i++) {
-<a class="jxr_linenumber" name="106" href="#106">106</a>                 <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx = tm.begin();
-<a class="jxr_linenumber" name="107" href="#107">107</a>                 LOG.info(<span class="jxr_string">"Transaction #{} {} STARTED"</span>, i, tx);
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>                 Put row1 = <strong class="jxr_keyword">new</strong> Put(exampleRow1);
-<a class="jxr_linenumber" name="110" href="#110">110</a>                 row1.add(family, qualifier, dataValue1);
-<a class="jxr_linenumber" name="111" href="#111">111</a>                 txTable.put(tx, row1);
-<a class="jxr_linenumber" name="112" href="#112">112</a>                 LOG.info(<span class="jxr_string">"Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} "</span>,
-<a class="jxr_linenumber" name="113" href="#113">113</a>                          tx, userTableName, Bytes.toString(exampleRow1), Bytes.toString(family),
-<a class="jxr_linenumber" name="114" href="#114">114</a>                          Bytes.toString(qualifier), Bytes.toString(dataValue1));
-<a class="jxr_linenumber" name="115" href="#115">115</a> 
-<a class="jxr_linenumber" name="116" href="#116">116</a>                 Put row2 = <strong class="jxr_keyword">new</strong> Put(exampleRow2);
-<a class="jxr_linenumber" name="117" href="#117">117</a>                 row2.add(family, qualifier, dataValue2);
-<a class="jxr_linenumber" name="118" href="#118">118</a>                 txTable.put(tx, row2);
-<a class="jxr_linenumber" name="119" href="#119">119</a>                 LOG.info(<span class="jxr_string">"Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} "</span>,
-<a class="jxr_linenumber" name="120" href="#120">120</a>                          tx, userTableName, Bytes.toString(exampleRow2), Bytes.toString(family),
-<a class="jxr_linenumber" name="121" href="#121">121</a>                          Bytes.toString(qualifier), Bytes.toString(dataValue2));
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a>                 tm.commit(tx);
-<a class="jxr_linenumber" name="124" href="#124">124</a>                 LOG.info(<span class="jxr_string">"Transaction #{} {} COMMITTED"</span>, i, tx);
-<a class="jxr_linenumber" name="125" href="#125">125</a>             }
-<a class="jxr_linenumber" name="126" href="#126">126</a>         }
-<a class="jxr_linenumber" name="127" href="#127">127</a> 
-<a class="jxr_linenumber" name="128" href="#128">128</a>     }
-<a class="jxr_linenumber" name="129" href="#129">129</a> 
-<a class="jxr_linenumber" name="130" href="#130">130</a> }
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <em class="jxr_comment">// Omid client settings configuration from application code</em>
+<a class="jxr_linenumber" name="80" href="#80">80</a>          <em class="jxr_comment">// -----------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>          <em class="jxr_comment">// You can also configure Omid programmatically from your code. This is useful for example in unit tests.</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>          <em class="jxr_comment">// The HBaseOmidClientConfiguration still loads defaults from 'default-hbase-omid-client-config.yml' first,</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <em class="jxr_comment">// and then applies settings from 'hbase-omid-client-config.yml' if it's available and then use explicit</em>
+<a class="jxr_linenumber" name="84" href="#84">84</a>          <em class="jxr_comment">// settings in the code. An example of an explicit Omid client configuration in code is shown below.</em>
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>          <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> omidClientConfiguration = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>();
+<a class="jxr_linenumber" name="87" href="#87">87</a>          omidClientConfiguration.setConnectionType(DIRECT);
+<a class="jxr_linenumber" name="88" href="#88">88</a>          omidClientConfiguration.setConnectionString(<span class="jxr_string">"localhost:54758"</span>);
+<a class="jxr_linenumber" name="89" href="#89">89</a>          omidClientConfiguration.setRetryDelayInMs(3000);
+<a class="jxr_linenumber" name="90" href="#90">90</a>  
+<a class="jxr_linenumber" name="91" href="#91">91</a>          example.doWork(userTableName, family, omidClientConfiguration);
+<a class="jxr_linenumber" name="92" href="#92">92</a>      }
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> doWork(String userTableName, byte[] family, <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> configuration)
+<a class="jxr_linenumber" name="95" href="#95">95</a>              <strong class="jxr_keyword">throws</strong> IOException, RollbackException, InterruptedException {
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>          byte[] exampleRow1 = Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW1"</span>);
+<a class="jxr_linenumber" name="98" href="#98">98</a>          byte[] exampleRow2 = Bytes.toBytes(<span class="jxr_string">"EXAMPLE_ROW2"</span>);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"MY_Q"</span>);
+<a class="jxr_linenumber" name="100" href="#100">100</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"val1"</span>);
+<a class="jxr_linenumber" name="101" href="#101">101</a>         byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"val2"</span>);
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>         LOG.info(<span class="jxr_string">"Creating access to Omid Transaction Manager &amp; Transactional Table '{}'"</span>, userTableName);
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">try</strong> (TransactionManager tm = HBaseTransactionManager.newInstance(configuration);
+<a class="jxr_linenumber" name="105" href="#105">105</a>              Connection conn = ConnectionFactory.createConnection();
+<a class="jxr_linenumber" name="106" href="#106">106</a>              <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> txTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(conn, userTableName))
+<a class="jxr_linenumber" name="107" href="#107">107</a>         {
+<a class="jxr_linenumber" name="108" href="#108">108</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 100; i++) {
+<a class="jxr_linenumber" name="109" href="#109">109</a>                 <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx = tm.begin();
+<a class="jxr_linenumber" name="110" href="#110">110</a>                 LOG.info(<span class="jxr_string">"Transaction #{} {} STARTED"</span>, i, tx);
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>                 Put row1 = <strong class="jxr_keyword">new</strong> Put(exampleRow1);
+<a class="jxr_linenumber" name="113" href="#113">113</a>                 row1.addColumn(family, qualifier, dataValue1);
+<a class="jxr_linenumber" name="114" href="#114">114</a>                 txTable.put(tx, row1);
+<a class="jxr_linenumber" name="115" href="#115">115</a>                 LOG.info(<span class="jxr_string">"Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} "</span>,
+<a class="jxr_linenumber" name="116" href="#116">116</a>                          tx, userTableName, Bytes.toString(exampleRow1), Bytes.toString(family),
+<a class="jxr_linenumber" name="117" href="#117">117</a>                          Bytes.toString(qualifier), Bytes.toString(dataValue1));
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>                 Put row2 = <strong class="jxr_keyword">new</strong> Put(exampleRow2);
+<a class="jxr_linenumber" name="120" href="#120">120</a>                 row2.addColumn(family, qualifier, dataValue2);
+<a class="jxr_linenumber" name="121" href="#121">121</a>                 txTable.put(tx, row2);
+<a class="jxr_linenumber" name="122" href="#122">122</a>                 LOG.info(<span class="jxr_string">"Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} "</span>,
+<a class="jxr_linenumber" name="123" href="#123">123</a>                          tx, userTableName, Bytes.toString(exampleRow2), Bytes.toString(family),
+<a class="jxr_linenumber" name="124" href="#124">124</a>                          Bytes.toString(qualifier), Bytes.toString(dataValue2));
+<a class="jxr_linenumber" name="125" href="#125">125</a> 
+<a class="jxr_linenumber" name="126" href="#126">126</a>                 tm.commit(tx);
+<a class="jxr_linenumber" name="127" href="#127">127</a>                 LOG.info(<span class="jxr_string">"Transaction #{} {} COMMITTED"</span>, i, tx);
+<a class="jxr_linenumber" name="128" href="#128">128</a>             }
+<a class="jxr_linenumber" name="129" href="#129">129</a>         }
+<a class="jxr_linenumber" name="130" href="#130">130</a> 
+<a class="jxr_linenumber" name="131" href="#131">131</a>     }
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[02/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/ReplyProcessorImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/ReplyProcessorImpl.html b/xref/org/apache/omid/tso/ReplyProcessorImpl.html
index 2986dff..e6685c6 100644
--- a/xref/org/apache/omid/tso/ReplyProcessorImpl.html
+++ b/xref/org/apache/omid/tso/ReplyProcessorImpl.html
@@ -77,203 +77,222 @@
 <a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Meter.html">Meter</a> abortMeter;
 <a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Meter.html">Meter</a> commitMeter;
 <a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Meter.html">Meter</a> timestampMeter;
-<a class="jxr_linenumber" name="70" href="#70">70</a>  
-<a class="jxr_linenumber" name="71" href="#71">71</a>      @Inject
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyProcessorImpl</a>(@Named(<span class="jxr_string">"ReplyStrategy"</span>) WaitStrategy strategy,
-<a class="jxr_linenumber" name="73" href="#73">73</a>              <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics, <a href="../../../../org/apache/omid/tso/Panicker.html">Panicker</a> panicker, ObjectPool&lt;Batch&gt; batchPool) {
-<a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <em class="jxr_comment">// Disruptor initialization</em>
-<a class="jxr_linenumber" name="77" href="#77">77</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>          ThreadFactoryBuilder threadFactory = <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"reply-%d"</span>);
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">this</strong>.disruptorExec = Executors.newSingleThreadExecutor(threadFactory.build());
-<a class="jxr_linenumber" name="81" href="#81">81</a>  
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">this</strong>.disruptor = <strong class="jxr_keyword">new</strong> Disruptor&lt;&gt;(EVENT_FACTORY, 1 &lt;&lt; 12, disruptorExec, MULTI, strategy);
-<a class="jxr_linenumber" name="83" href="#83">83</a>          disruptor.handleExceptionsWith(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/FatalExceptionHandler.html">FatalExceptionHandler</a>(panicker));
-<a class="jxr_linenumber" name="84" href="#84">84</a>          disruptor.handleEventsWith(<strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">this</strong>.replyRing = disruptor.start();
-<a class="jxr_linenumber" name="86" href="#86">86</a>  
-<a class="jxr_linenumber" name="87" href="#87">87</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="88" href="#88">88</a>          <em class="jxr_comment">// Attribute initialization</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">this</strong>.batchPool = batchPool;
-<a class="jxr_linenumber" name="92" href="#92">92</a>          <strong class="jxr_keyword">this</strong>.nextIDToHandle.set(0);
-<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">this</strong>.futureEvents = <strong class="jxr_keyword">new</strong> PriorityQueue&lt;&gt;(10, <strong class="jxr_keyword">new</strong> Comparator&lt;ReplyBatchEvent&gt;() {
-<a class="jxr_linenumber" name="94" href="#94">94</a>              <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compare(<a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> replyBatchEvent1, <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> replyBatchEvent2) {
-<a class="jxr_linenumber" name="95" href="#95">95</a>                  <strong class="jxr_keyword">return</strong> Long.compare(replyBatchEvent1.getBatchSequence(), replyBatchEvent2.getBatchSequence());
-<a class="jxr_linenumber" name="96" href="#96">96</a>              }
-<a class="jxr_linenumber" name="97" href="#97">97</a>          });
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>          <em class="jxr_comment">// Metrics config</em>
-<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">this</strong>.abortMeter = metrics.meter(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"aborts"</span>));
-<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">this</strong>.commitMeter = metrics.meter(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"commits"</span>));
-<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">this</strong>.timestampMeter = metrics.meter(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"timestampAllocation"</span>));
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>         LOG.info(<span class="jxr_string">"ReplyProcessor initialized"</span>);
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Meter.html">Meter</a> fenceMeter;
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      @Inject
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyProcessorImpl</a>(@Named(<span class="jxr_string">"ReplyStrategy"</span>) WaitStrategy strategy,
+<a class="jxr_linenumber" name="74" href="#74">74</a>              <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics, <a href="../../../../org/apache/omid/tso/Panicker.html">Panicker</a> panicker, ObjectPool&lt;Batch&gt; batchPool) {
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="77" href="#77">77</a>          <em class="jxr_comment">// Disruptor initialization</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>          ThreadFactoryBuilder threadFactory = <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"reply-%d"</span>);
+<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">this</strong>.disruptorExec = Executors.newSingleThreadExecutor(threadFactory.build());
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">this</strong>.disruptor = <strong class="jxr_keyword">new</strong> Disruptor&lt;&gt;(EVENT_FACTORY, 1 &lt;&lt; 12, disruptorExec, MULTI, strategy);
+<a class="jxr_linenumber" name="84" href="#84">84</a>          disruptor.handleExceptionsWith(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/FatalExceptionHandler.html">FatalExceptionHandler</a>(panicker));
+<a class="jxr_linenumber" name="85" href="#85">85</a>          disruptor.handleEventsWith(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">this</strong>.replyRing = disruptor.start();
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>          <em class="jxr_comment">// Attribute initialization</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>          <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>          <strong class="jxr_keyword">this</strong>.batchPool = batchPool;
+<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">this</strong>.nextIDToHandle.set(0);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">this</strong>.futureEvents = <strong class="jxr_keyword">new</strong> PriorityQueue&lt;&gt;(10, <strong class="jxr_keyword">new</strong> Comparator&lt;ReplyBatchEvent&gt;() {
+<a class="jxr_linenumber" name="95" href="#95">95</a>              <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compare(<a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> replyBatchEvent1, <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> replyBatchEvent2) {
+<a class="jxr_linenumber" name="96" href="#96">96</a>                  <strong class="jxr_keyword">return</strong> Long.compare(replyBatchEvent1.getBatchSequence(), replyBatchEvent2.getBatchSequence());
+<a class="jxr_linenumber" name="97" href="#97">97</a>              }
+<a class="jxr_linenumber" name="98" href="#98">98</a>          });
+<a class="jxr_linenumber" name="99" href="#99">99</a>  
+<a class="jxr_linenumber" name="100" href="#100">100</a>         <em class="jxr_comment">// Metrics config</em>
+<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">this</strong>.abortMeter = metrics.meter(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"aborts"</span>));
+<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">this</strong>.commitMeter = metrics.meter(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"commits"</span>));
+<a class="jxr_linenumber" name="103" href="#103">103</a>         <strong class="jxr_keyword">this</strong>.timestampMeter = metrics.meter(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"timestampAllocation"</span>));
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">this</strong>.fenceMeter = metrics.meter(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"fences"</span>));
 <a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>     }
+<a class="jxr_linenumber" name="106" href="#106">106</a>         LOG.info(<span class="jxr_string">"ReplyProcessor initialized"</span>);
 <a class="jxr_linenumber" name="107" href="#107">107</a> 
-<a class="jxr_linenumber" name="108" href="#108">108</a>     @VisibleForTesting
-<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">void</strong> handleReplyBatchEvent(<a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> replyBatchEvent) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="110" href="#110">110</a> 
-<a class="jxr_linenumber" name="111" href="#111">111</a>         <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch = replyBatchEvent.getBatch();
-<a class="jxr_linenumber" name="112" href="#112">112</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; batch.getNumEvents(); i++) {
-<a class="jxr_linenumber" name="113" href="#113">113</a>             <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> event = batch.get(i);
-<a class="jxr_linenumber" name="114" href="#114">114</a> 
-<a class="jxr_linenumber" name="115" href="#115">115</a>             <strong class="jxr_keyword">switch</strong> (event.getType()) {
-<a class="jxr_linenumber" name="116" href="#116">116</a>                 <strong class="jxr_keyword">case</strong> COMMIT:
-<a class="jxr_linenumber" name="117" href="#117">117</a>                     sendCommitResponse(event.getStartTimestamp(), event.getCommitTimestamp(), event.getChannel());
-<a class="jxr_linenumber" name="118" href="#118">118</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"reply.processor.commit.latency"</span>);
-<a class="jxr_linenumber" name="119" href="#119">119</a>                     commitMeter.mark();
-<a class="jxr_linenumber" name="120" href="#120">120</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="121" href="#121">121</a>                 <strong class="jxr_keyword">case</strong> ABORT:
-<a class="jxr_linenumber" name="122" href="#122">122</a>                     sendAbortResponse(event.getStartTimestamp(), event.getChannel());
-<a class="jxr_linenumber" name="123" href="#123">123</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"reply.processor.abort.latency"</span>);
-<a class="jxr_linenumber" name="124" href="#124">124</a>                     abortMeter.mark();
-<a class="jxr_linenumber" name="125" href="#125">125</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="126" href="#126">126</a>                 <strong class="jxr_keyword">case</strong> TIMESTAMP:
-<a class="jxr_linenumber" name="127" href="#127">127</a>                     sendTimestampResponse(event.getStartTimestamp(), event.getChannel());
-<a class="jxr_linenumber" name="128" href="#128">128</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"reply.processor.timestamp.latency"</span>);
-<a class="jxr_linenumber" name="129" href="#129">129</a>                     timestampMeter.mark();
-<a class="jxr_linenumber" name="130" href="#130">130</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="131" href="#131">131</a>                 <strong class="jxr_keyword">case</strong> COMMIT_RETRY:
-<a class="jxr_linenumber" name="132" href="#132">132</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"COMMIT_RETRY events must be filtered before this step: "</span> + event);
-<a class="jxr_linenumber" name="133" href="#133">133</a>                 <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="134" href="#134">134</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Event not allowed in Persistent Processor Handler: "</span> + event);
-<a class="jxr_linenumber" name="135" href="#135">135</a>             }
-<a class="jxr_linenumber" name="136" href="#136">136</a>             event.getMonCtx().publish();
-<a class="jxr_linenumber" name="137" href="#137">137</a>         }
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>         batchPool.returnObject(batch);
-<a class="jxr_linenumber" name="140" href="#140">140</a> 
-<a class="jxr_linenumber" name="141" href="#141">141</a>     }
-<a class="jxr_linenumber" name="142" href="#142">142</a> 
-<a class="jxr_linenumber" name="143" href="#143">143</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> processWaitingEvents() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="144" href="#144">144</a> 
-<a class="jxr_linenumber" name="145" href="#145">145</a>         <strong class="jxr_keyword">while</strong> (!futureEvents.isEmpty() &amp;&amp; futureEvents.peek().getBatchSequence() == nextIDToHandle.get()) {
-<a class="jxr_linenumber" name="146" href="#146">146</a>             <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> e = futureEvents.poll();
-<a class="jxr_linenumber" name="147" href="#147">147</a>             handleReplyBatchEvent(e);
-<a class="jxr_linenumber" name="148" href="#148">148</a>             nextIDToHandle.incrementAndGet();
-<a class="jxr_linenumber" name="149" href="#149">149</a>         }
-<a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>     }
-<a class="jxr_linenumber" name="152" href="#152">152</a> 
-<a class="jxr_linenumber" name="153" href="#153">153</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onEvent(<a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> event, <strong class="jxr_keyword">long</strong> sequence, <strong class="jxr_keyword">boolean</strong> endOfBatch) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="154" href="#154">154</a> 
-<a class="jxr_linenumber" name="155" href="#155">155</a>         <em class="jxr_comment">// Order of event's reply need to be guaranteed in order to preserve snapshot isolation.</em>
-<a class="jxr_linenumber" name="156" href="#156">156</a>         <em class="jxr_comment">// This is done in order to present a scenario where a start id of N is returned</em>
-<a class="jxr_linenumber" name="157" href="#157">157</a>         <em class="jxr_comment">// while commit smaller than still does not appear in the commit table.</em>
-<a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>         <em class="jxr_comment">// If previous events were not processed yet (events contain smaller id)</em>
-<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">if</strong> (event.getBatchSequence() &gt; nextIDToHandle.get()) {
-<a class="jxr_linenumber" name="161" href="#161">161</a>             futureEvents.add(event);
-<a class="jxr_linenumber" name="162" href="#162">162</a>             <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="163" href="#163">163</a>         }
-<a class="jxr_linenumber" name="164" href="#164">164</a> 
-<a class="jxr_linenumber" name="165" href="#165">165</a>         handleReplyBatchEvent(event);
-<a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>         nextIDToHandle.incrementAndGet();
-<a class="jxr_linenumber" name="168" href="#168">168</a> 
-<a class="jxr_linenumber" name="169" href="#169">169</a>         <em class="jxr_comment">// Process events that arrived before and kept in futureEvents.</em>
-<a class="jxr_linenumber" name="170" href="#170">170</a>         processWaitingEvents();
+<a class="jxr_linenumber" name="108" href="#108">108</a>     }
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>     @VisibleForTesting
+<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">void</strong> handleReplyBatchEvent(<a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> replyBatchEvent) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>         <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch = replyBatchEvent.getBatch();
+<a class="jxr_linenumber" name="114" href="#114">114</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; batch.getNumEvents(); i++) {
+<a class="jxr_linenumber" name="115" href="#115">115</a>             <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> event = batch.get(i);
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a>             <strong class="jxr_keyword">switch</strong> (event.getType()) {
+<a class="jxr_linenumber" name="118" href="#118">118</a>                 <strong class="jxr_keyword">case</strong> COMMIT:
+<a class="jxr_linenumber" name="119" href="#119">119</a>                     sendCommitResponse(event.getStartTimestamp(), event.getCommitTimestamp(), event.getChannel());
+<a class="jxr_linenumber" name="120" href="#120">120</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"reply.processor.commit.latency"</span>);
+<a class="jxr_linenumber" name="121" href="#121">121</a>                     commitMeter.mark();
+<a class="jxr_linenumber" name="122" href="#122">122</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="123" href="#123">123</a>                 <strong class="jxr_keyword">case</strong> ABORT:
+<a class="jxr_linenumber" name="124" href="#124">124</a>                     sendAbortResponse(event.getStartTimestamp(), event.getChannel());
+<a class="jxr_linenumber" name="125" href="#125">125</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"reply.processor.abort.latency"</span>);
+<a class="jxr_linenumber" name="126" href="#126">126</a>                     abortMeter.mark();
+<a class="jxr_linenumber" name="127" href="#127">127</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="128" href="#128">128</a>                 <strong class="jxr_keyword">case</strong> TIMESTAMP:
+<a class="jxr_linenumber" name="129" href="#129">129</a>                     sendTimestampResponse(event.getStartTimestamp(), event.getChannel());
+<a class="jxr_linenumber" name="130" href="#130">130</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"reply.processor.timestamp.latency"</span>);
+<a class="jxr_linenumber" name="131" href="#131">131</a>                     timestampMeter.mark();
+<a class="jxr_linenumber" name="132" href="#132">132</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="133" href="#133">133</a>                 <strong class="jxr_keyword">case</strong> FENCE:
+<a class="jxr_linenumber" name="134" href="#134">134</a>                     sendFenceResponse(event.getStartTimestamp(), event.getCommitTimestamp(), event.getChannel());
+<a class="jxr_linenumber" name="135" href="#135">135</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"reply.processor.fence.latency"</span>);
+<a class="jxr_linenumber" name="136" href="#136">136</a>                     fenceMeter.mark();
+<a class="jxr_linenumber" name="137" href="#137">137</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="138" href="#138">138</a>                 <strong class="jxr_keyword">case</strong> COMMIT_RETRY:
+<a class="jxr_linenumber" name="139" href="#139">139</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"COMMIT_RETRY events must be filtered before this step: "</span> + event);
+<a class="jxr_linenumber" name="140" href="#140">140</a>                 <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="141" href="#141">141</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Event not allowed in Persistent Processor Handler: "</span> + event);
+<a class="jxr_linenumber" name="142" href="#142">142</a>             }
+<a class="jxr_linenumber" name="143" href="#143">143</a>             event.getMonCtx().publish();
+<a class="jxr_linenumber" name="144" href="#144">144</a>         }
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>         batchPool.returnObject(batch);
+<a class="jxr_linenumber" name="147" href="#147">147</a> 
+<a class="jxr_linenumber" name="148" href="#148">148</a>     }
+<a class="jxr_linenumber" name="149" href="#149">149</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> processWaitingEvents() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>         <strong class="jxr_keyword">while</strong> (!futureEvents.isEmpty() &amp;&amp; futureEvents.peek().getBatchSequence() == nextIDToHandle.get()) {
+<a class="jxr_linenumber" name="153" href="#153">153</a>             <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> e = futureEvents.poll();
+<a class="jxr_linenumber" name="154" href="#154">154</a>             handleReplyBatchEvent(e);
+<a class="jxr_linenumber" name="155" href="#155">155</a>             nextIDToHandle.incrementAndGet();
+<a class="jxr_linenumber" name="156" href="#156">156</a>         }
+<a class="jxr_linenumber" name="157" href="#157">157</a> 
+<a class="jxr_linenumber" name="158" href="#158">158</a>     }
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onEvent(<a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> event, <strong class="jxr_keyword">long</strong> sequence, <strong class="jxr_keyword">boolean</strong> endOfBatch) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="161" href="#161">161</a> 
+<a class="jxr_linenumber" name="162" href="#162">162</a>         <em class="jxr_comment">// Order of event's reply need to be guaranteed in order to preserve snapshot isolation.</em>
+<a class="jxr_linenumber" name="163" href="#163">163</a>         <em class="jxr_comment">// This is done in order to present a scenario where a start id of N is returned</em>
+<a class="jxr_linenumber" name="164" href="#164">164</a>         <em class="jxr_comment">// while commit smaller than still does not appear in the commit table.</em>
+<a class="jxr_linenumber" name="165" href="#165">165</a> 
+<a class="jxr_linenumber" name="166" href="#166">166</a>         <em class="jxr_comment">// If previous events were not processed yet (events contain smaller id)</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">if</strong> (event.getBatchSequence() &gt; nextIDToHandle.get()) {
+<a class="jxr_linenumber" name="168" href="#168">168</a>             futureEvents.add(event);
+<a class="jxr_linenumber" name="169" href="#169">169</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="170" href="#170">170</a>         }
 <a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>     }
+<a class="jxr_linenumber" name="172" href="#172">172</a>         handleReplyBatchEvent(event);
 <a class="jxr_linenumber" name="173" href="#173">173</a> 
-<a class="jxr_linenumber" name="174" href="#174">174</a>     @Override
-<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> manageResponsesBatch(<strong class="jxr_keyword">long</strong> batchSequence, <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch) {
-<a class="jxr_linenumber" name="176" href="#176">176</a> 
-<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">long</strong> seq = replyRing.next();
-<a class="jxr_linenumber" name="178" href="#178">178</a>         <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> e = replyRing.get(seq);
-<a class="jxr_linenumber" name="179" href="#179">179</a>         ReplyBatchEvent.makeReplyBatch(e, batch, batchSequence);
-<a class="jxr_linenumber" name="180" href="#180">180</a>         replyRing.publish(seq);
-<a class="jxr_linenumber" name="181" href="#181">181</a> 
-<a class="jxr_linenumber" name="182" href="#182">182</a>     }
+<a class="jxr_linenumber" name="174" href="#174">174</a>         nextIDToHandle.incrementAndGet();
+<a class="jxr_linenumber" name="175" href="#175">175</a> 
+<a class="jxr_linenumber" name="176" href="#176">176</a>         <em class="jxr_comment">// Process events that arrived before and kept in futureEvents.</em>
+<a class="jxr_linenumber" name="177" href="#177">177</a>         processWaitingEvents();
+<a class="jxr_linenumber" name="178" href="#178">178</a> 
+<a class="jxr_linenumber" name="179" href="#179">179</a>     }
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>     @Override
+<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> manageResponsesBatch(<strong class="jxr_keyword">long</strong> batchSequence, <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch) {
 <a class="jxr_linenumber" name="183" href="#183">183</a> 
-<a class="jxr_linenumber" name="184" href="#184">184</a>     @Override
-<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendCommitResponse(<strong class="jxr_keyword">long</strong> startTimestamp, <strong class="jxr_keyword">long</strong> commitTimestamp, Channel c) {
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>         TSOProto.Response.Builder builder = TSOProto.Response.newBuilder();
-<a class="jxr_linenumber" name="188" href="#188">188</a>         TSOProto.CommitResponse.Builder commitBuilder = TSOProto.CommitResponse.newBuilder();
-<a class="jxr_linenumber" name="189" href="#189">189</a>         commitBuilder.setAborted(false)
-<a class="jxr_linenumber" name="190" href="#190">190</a>                 .setStartTimestamp(startTimestamp)
-<a class="jxr_linenumber" name="191" href="#191">191</a>                 .setCommitTimestamp(commitTimestamp);
-<a class="jxr_linenumber" name="192" href="#192">192</a>         builder.setCommitResponse(commitBuilder.build());
-<a class="jxr_linenumber" name="193" href="#193">193</a>         c.write(builder.build());
-<a class="jxr_linenumber" name="194" href="#194">194</a> 
-<a class="jxr_linenumber" name="195" href="#195">195</a>     }
-<a class="jxr_linenumber" name="196" href="#196">196</a> 
-<a class="jxr_linenumber" name="197" href="#197">197</a>     @Override
-<a class="jxr_linenumber" name="198" href="#198">198</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendAbortResponse(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c) {
-<a class="jxr_linenumber" name="199" href="#199">199</a> 
-<a class="jxr_linenumber" name="200" href="#200">200</a>         TSOProto.Response.Builder builder = TSOProto.Response.newBuilder();
-<a class="jxr_linenumber" name="201" href="#201">201</a>         TSOProto.CommitResponse.Builder commitBuilder = TSOProto.CommitResponse.newBuilder();
-<a class="jxr_linenumber" name="202" href="#202">202</a>         commitBuilder.setAborted(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="203" href="#203">203</a>         commitBuilder.setStartTimestamp(startTimestamp);
-<a class="jxr_linenumber" name="204" href="#204">204</a>         builder.setCommitResponse(commitBuilder.build());
-<a class="jxr_linenumber" name="205" href="#205">205</a>         c.write(builder.build());
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">long</strong> seq = replyRing.next();
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> e = replyRing.get(seq);
+<a class="jxr_linenumber" name="186" href="#186">186</a>         ReplyBatchEvent.makeReplyBatch(e, batch, batchSequence);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         replyRing.publish(seq);
+<a class="jxr_linenumber" name="188" href="#188">188</a> 
+<a class="jxr_linenumber" name="189" href="#189">189</a>     }
+<a class="jxr_linenumber" name="190" href="#190">190</a> 
+<a class="jxr_linenumber" name="191" href="#191">191</a>     @Override
+<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendCommitResponse(<strong class="jxr_keyword">long</strong> startTimestamp, <strong class="jxr_keyword">long</strong> commitTimestamp, Channel c) {
+<a class="jxr_linenumber" name="193" href="#193">193</a> 
+<a class="jxr_linenumber" name="194" href="#194">194</a>         TSOProto.Response.Builder builder = TSOProto.Response.newBuilder();
+<a class="jxr_linenumber" name="195" href="#195">195</a>         TSOProto.CommitResponse.Builder commitBuilder = TSOProto.CommitResponse.newBuilder();
+<a class="jxr_linenumber" name="196" href="#196">196</a>         commitBuilder.setAborted(false)
+<a class="jxr_linenumber" name="197" href="#197">197</a>                 .setStartTimestamp(startTimestamp)
+<a class="jxr_linenumber" name="198" href="#198">198</a>                 .setCommitTimestamp(commitTimestamp);
+<a class="jxr_linenumber" name="199" href="#199">199</a>         builder.setCommitResponse(commitBuilder.build());
+<a class="jxr_linenumber" name="200" href="#200">200</a>         c.write(builder.build());
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>     }
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>     @Override
+<a class="jxr_linenumber" name="205" href="#205">205</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendAbortResponse(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c) {
 <a class="jxr_linenumber" name="206" href="#206">206</a> 
-<a class="jxr_linenumber" name="207" href="#207">207</a>     }
-<a class="jxr_linenumber" name="208" href="#208">208</a> 
-<a class="jxr_linenumber" name="209" href="#209">209</a>     @Override
-<a class="jxr_linenumber" name="210" href="#210">210</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendTimestampResponse(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c) {
-<a class="jxr_linenumber" name="211" href="#211">211</a> 
-<a class="jxr_linenumber" name="212" href="#212">212</a>         TSOProto.Response.Builder builder = TSOProto.Response.newBuilder();
-<a class="jxr_linenumber" name="213" href="#213">213</a>         TSOProto.TimestampResponse.Builder respBuilder = TSOProto.TimestampResponse.newBuilder();
-<a class="jxr_linenumber" name="214" href="#214">214</a>         respBuilder.setStartTimestamp(startTimestamp);
-<a class="jxr_linenumber" name="215" href="#215">215</a>         builder.setTimestampResponse(respBuilder.build());
-<a class="jxr_linenumber" name="216" href="#216">216</a>         c.write(builder.build());
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>     }
-<a class="jxr_linenumber" name="219" href="#219">219</a> 
-<a class="jxr_linenumber" name="220" href="#220">220</a>     @Override
-<a class="jxr_linenumber" name="221" href="#221">221</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() {
-<a class="jxr_linenumber" name="222" href="#222">222</a> 
-<a class="jxr_linenumber" name="223" href="#223">223</a>         LOG.info(<span class="jxr_string">"Terminating Reply Processor..."</span>);
-<a class="jxr_linenumber" name="224" href="#224">224</a>         disruptor.halt();
-<a class="jxr_linenumber" name="225" href="#225">225</a>         disruptor.shutdown();
-<a class="jxr_linenumber" name="226" href="#226">226</a>         LOG.info(<span class="jxr_string">"\tReply Processor Disruptor shutdown"</span>);
-<a class="jxr_linenumber" name="227" href="#227">227</a>         disruptorExec.shutdownNow();
-<a class="jxr_linenumber" name="228" href="#228">228</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="229" href="#229">229</a>             disruptorExec.awaitTermination(3, SECONDS);
-<a class="jxr_linenumber" name="230" href="#230">230</a>             LOG.info(<span class="jxr_string">"\tReply Processor Disruptor executor shutdown"</span>);
-<a class="jxr_linenumber" name="231" href="#231">231</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
-<a class="jxr_linenumber" name="232" href="#232">232</a>             LOG.error(<span class="jxr_string">"Interrupted whilst finishing Reply Processor Disruptor executor"</span>);
-<a class="jxr_linenumber" name="233" href="#233">233</a>             Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="234" href="#234">234</a>         }
-<a class="jxr_linenumber" name="235" href="#235">235</a>         LOG.info(<span class="jxr_string">"Reply Processor terminated"</span>);
+<a class="jxr_linenumber" name="207" href="#207">207</a>         TSOProto.Response.Builder builder = TSOProto.Response.newBuilder();
+<a class="jxr_linenumber" name="208" href="#208">208</a>         TSOProto.CommitResponse.Builder commitBuilder = TSOProto.CommitResponse.newBuilder();
+<a class="jxr_linenumber" name="209" href="#209">209</a>         commitBuilder.setAborted(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="210" href="#210">210</a>         commitBuilder.setStartTimestamp(startTimestamp);
+<a class="jxr_linenumber" name="211" href="#211">211</a>         builder.setCommitResponse(commitBuilder.build());
+<a class="jxr_linenumber" name="212" href="#212">212</a>         c.write(builder.build());
+<a class="jxr_linenumber" name="213" href="#213">213</a> 
+<a class="jxr_linenumber" name="214" href="#214">214</a>     }
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>     @Override
+<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendTimestampResponse(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c) {
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>         TSOProto.Response.Builder builder = TSOProto.Response.newBuilder();
+<a class="jxr_linenumber" name="220" href="#220">220</a>         TSOProto.TimestampResponse.Builder respBuilder = TSOProto.TimestampResponse.newBuilder();
+<a class="jxr_linenumber" name="221" href="#221">221</a>         respBuilder.setStartTimestamp(startTimestamp);
+<a class="jxr_linenumber" name="222" href="#222">222</a>         builder.setTimestampResponse(respBuilder.build());
+<a class="jxr_linenumber" name="223" href="#223">223</a>         c.write(builder.build());
+<a class="jxr_linenumber" name="224" href="#224">224</a> 
+<a class="jxr_linenumber" name="225" href="#225">225</a>     }
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>     @Override
+<a class="jxr_linenumber" name="228" href="#228">228</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> sendFenceResponse(<strong class="jxr_keyword">long</strong> tableID, <strong class="jxr_keyword">long</strong> fenceTimestamp, Channel c) {
+<a class="jxr_linenumber" name="229" href="#229">229</a> 
+<a class="jxr_linenumber" name="230" href="#230">230</a>         TSOProto.Response.Builder builder = TSOProto.Response.newBuilder();
+<a class="jxr_linenumber" name="231" href="#231">231</a>         TSOProto.FenceResponse.Builder fenceBuilder = TSOProto.FenceResponse.newBuilder();
+<a class="jxr_linenumber" name="232" href="#232">232</a>         fenceBuilder.setTableId(tableID);
+<a class="jxr_linenumber" name="233" href="#233">233</a>         fenceBuilder.setFenceId(fenceTimestamp);
+<a class="jxr_linenumber" name="234" href="#234">234</a>         builder.setFenceResponse(fenceBuilder.build());
+<a class="jxr_linenumber" name="235" href="#235">235</a>         c.write(builder.build());
 <a class="jxr_linenumber" name="236" href="#236">236</a> 
 <a class="jxr_linenumber" name="237" href="#237">237</a>     }
 <a class="jxr_linenumber" name="238" href="#238">238</a> 
-<a class="jxr_linenumber" name="239" href="#239">239</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> {
-<a class="jxr_linenumber" name="240" href="#240">240</a> 
-<a class="jxr_linenumber" name="241" href="#241">241</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch;
-<a class="jxr_linenumber" name="242" href="#242">242</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> batchSequence;
-<a class="jxr_linenumber" name="243" href="#243">243</a> 
-<a class="jxr_linenumber" name="244" href="#244">244</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makeReplyBatch(<a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> e, <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch, <strong class="jxr_keyword">long</strong> batchSequence) {
-<a class="jxr_linenumber" name="245" href="#245">245</a>             e.batch = batch;
-<a class="jxr_linenumber" name="246" href="#246">246</a>             e.batchSequence = batchSequence;
-<a class="jxr_linenumber" name="247" href="#247">247</a>         }
-<a class="jxr_linenumber" name="248" href="#248">248</a> 
-<a class="jxr_linenumber" name="249" href="#249">249</a>         <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> getBatch() {
-<a class="jxr_linenumber" name="250" href="#250">250</a>             <strong class="jxr_keyword">return</strong> batch;
-<a class="jxr_linenumber" name="251" href="#251">251</a>         }
-<a class="jxr_linenumber" name="252" href="#252">252</a> 
-<a class="jxr_linenumber" name="253" href="#253">253</a>         <strong class="jxr_keyword">long</strong> getBatchSequence() {
-<a class="jxr_linenumber" name="254" href="#254">254</a>             <strong class="jxr_keyword">return</strong> batchSequence;
-<a class="jxr_linenumber" name="255" href="#255">255</a>         }
-<a class="jxr_linenumber" name="256" href="#256">256</a> 
-<a class="jxr_linenumber" name="257" href="#257">257</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> EventFactory&lt;ReplyBatchEvent&gt; EVENT_FACTORY = <strong class="jxr_keyword">new</strong> EventFactory&lt;ReplyBatchEvent&gt;() {
-<a class="jxr_linenumber" name="258" href="#258">258</a>             <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> newInstance() {
-<a class="jxr_linenumber" name="259" href="#259">259</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a>();
-<a class="jxr_linenumber" name="260" href="#260">260</a>             }
-<a class="jxr_linenumber" name="261" href="#261">261</a>         };
+<a class="jxr_linenumber" name="239" href="#239">239</a>     @Override
+<a class="jxr_linenumber" name="240" href="#240">240</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() {
+<a class="jxr_linenumber" name="241" href="#241">241</a> 
+<a class="jxr_linenumber" name="242" href="#242">242</a>         LOG.info(<span class="jxr_string">"Terminating Reply Processor..."</span>);
+<a class="jxr_linenumber" name="243" href="#243">243</a>         disruptor.halt();
+<a class="jxr_linenumber" name="244" href="#244">244</a>         disruptor.shutdown();
+<a class="jxr_linenumber" name="245" href="#245">245</a>         LOG.info(<span class="jxr_string">"\tReply Processor Disruptor shutdown"</span>);
+<a class="jxr_linenumber" name="246" href="#246">246</a>         disruptorExec.shutdownNow();
+<a class="jxr_linenumber" name="247" href="#247">247</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="248" href="#248">248</a>             disruptorExec.awaitTermination(3, SECONDS);
+<a class="jxr_linenumber" name="249" href="#249">249</a>             LOG.info(<span class="jxr_string">"\tReply Processor Disruptor executor shutdown"</span>);
+<a class="jxr_linenumber" name="250" href="#250">250</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
+<a class="jxr_linenumber" name="251" href="#251">251</a>             LOG.error(<span class="jxr_string">"Interrupted whilst finishing Reply Processor Disruptor executor"</span>);
+<a class="jxr_linenumber" name="252" href="#252">252</a>             Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="253" href="#253">253</a>         }
+<a class="jxr_linenumber" name="254" href="#254">254</a>         LOG.info(<span class="jxr_string">"Reply Processor terminated"</span>);
+<a class="jxr_linenumber" name="255" href="#255">255</a> 
+<a class="jxr_linenumber" name="256" href="#256">256</a>     }
+<a class="jxr_linenumber" name="257" href="#257">257</a> 
+<a class="jxr_linenumber" name="258" href="#258">258</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> {
+<a class="jxr_linenumber" name="259" href="#259">259</a> 
+<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch;
+<a class="jxr_linenumber" name="261" href="#261">261</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> batchSequence;
 <a class="jxr_linenumber" name="262" href="#262">262</a> 
-<a class="jxr_linenumber" name="263" href="#263">263</a>     }
-<a class="jxr_linenumber" name="264" href="#264">264</a> 
-<a class="jxr_linenumber" name="265" href="#265">265</a> }
-<a class="jxr_linenumber" name="266" href="#266">266</a> 
+<a class="jxr_linenumber" name="263" href="#263">263</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makeReplyBatch(<a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> e, <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch, <strong class="jxr_keyword">long</strong> batchSequence) {
+<a class="jxr_linenumber" name="264" href="#264">264</a>             e.batch = batch;
+<a class="jxr_linenumber" name="265" href="#265">265</a>             e.batchSequence = batchSequence;
+<a class="jxr_linenumber" name="266" href="#266">266</a>         }
+<a class="jxr_linenumber" name="267" href="#267">267</a> 
+<a class="jxr_linenumber" name="268" href="#268">268</a>         <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> getBatch() {
+<a class="jxr_linenumber" name="269" href="#269">269</a>             <strong class="jxr_keyword">return</strong> batch;
+<a class="jxr_linenumber" name="270" href="#270">270</a>         }
+<a class="jxr_linenumber" name="271" href="#271">271</a> 
+<a class="jxr_linenumber" name="272" href="#272">272</a>         <strong class="jxr_keyword">long</strong> getBatchSequence() {
+<a class="jxr_linenumber" name="273" href="#273">273</a>             <strong class="jxr_keyword">return</strong> batchSequence;
+<a class="jxr_linenumber" name="274" href="#274">274</a>         }
+<a class="jxr_linenumber" name="275" href="#275">275</a> 
+<a class="jxr_linenumber" name="276" href="#276">276</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> EventFactory&lt;ReplyBatchEvent&gt; EVENT_FACTORY = <strong class="jxr_keyword">new</strong> EventFactory&lt;ReplyBatchEvent&gt;() {
+<a class="jxr_linenumber" name="277" href="#277">277</a>             <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a> newInstance() {
+<a class="jxr_linenumber" name="278" href="#278">278</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/ReplyProcessorImpl.html">ReplyBatchEvent</a>();
+<a class="jxr_linenumber" name="279" href="#279">279</a>             }
+<a class="jxr_linenumber" name="280" href="#280">280</a>         };
+<a class="jxr_linenumber" name="281" href="#281">281</a> 
+<a class="jxr_linenumber" name="282" href="#282">282</a>     }
+<a class="jxr_linenumber" name="283" href="#283">283</a> 
+<a class="jxr_linenumber" name="284" href="#284">284</a> }
+<a class="jxr_linenumber" name="285" href="#285">285</a> 
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/RequestProcessor.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/RequestProcessor.html b/xref/org/apache/omid/tso/RequestProcessor.html
index 231a703..7288eda 100644
--- a/xref/org/apache/omid/tso/RequestProcessor.html
+++ b/xref/org/apache/omid/tso/RequestProcessor.html
@@ -37,9 +37,10 @@
 <a class="jxr_linenumber" name="27" href="#27">27</a>  
 <a class="jxr_linenumber" name="28" href="#28">28</a>      <strong class="jxr_keyword">void</strong> timestampRequest(Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx);
 <a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">void</strong> commitRequest(<strong class="jxr_keyword">long</strong> startTimestamp, Collection&lt;Long&gt; writeSet, <strong class="jxr_keyword">boolean</strong> isRetry, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx);
+<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">void</strong> commitRequest(<strong class="jxr_keyword">long</strong> startTimestamp, Collection&lt;Long&gt; writeSet, Collection&lt;Long&gt; tableIdSet, <strong class="jxr_keyword">boolean</strong> isRetry, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx);
 <a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  }
+<a class="jxr_linenumber" name="32" href="#32">32</a>      <strong class="jxr_keyword">void</strong> fenceRequest(<strong class="jxr_keyword">long</strong> tableID, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx);
+<a class="jxr_linenumber" name="33" href="#33">33</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[35/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestHBaseTransactionManager.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestHBaseTransactionManager.html b/xref-test/org/apache/omid/transaction/TestHBaseTransactionManager.html
index 58f473a..e0dc63c 100644
--- a/xref-test/org/apache/omid/transaction/TestHBaseTransactionManager.html
+++ b/xref-test/org/apache/omid/transaction/TestHBaseTransactionManager.html
@@ -27,23 +27,23 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anySetOf;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.timeout;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.times;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anySetOf;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.timeout;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.times;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="37" href="#37">37</a>  
 <a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_comment">// TODO These tests should be adapted to a future test for AbstractTransactionManager as they should be DB independent</em>
 <a class="jxr_linenumber" name="39" href="#39">39</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
@@ -62,7 +62,7 @@
 <a class="jxr_linenumber" name="52" href="#52">52</a>  
 <a class="jxr_linenumber" name="53" href="#53">53</a>          TSOClient tsoClient = spy(getClient(context));
 <a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>          <strong class="jxr_keyword">long</strong> fakeEpoch = tsoClient.getNewStartTimestamp().get() + FAKE_EPOCH_INCREMENT;
+<a class="jxr_linenumber" name="55" href="#55">55</a>          <strong class="jxr_keyword">long</strong> fakeEpoch = tsoClient.getNewStartTimestamp().get() + (FAKE_EPOCH_INCREMENT * AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN);
 <a class="jxr_linenumber" name="56" href="#56">56</a>  
 <a class="jxr_linenumber" name="57" href="#57">57</a>          <em class="jxr_comment">// Modify the epoch before testing the begin method</em>
 <a class="jxr_linenumber" name="58" href="#58">58</a>          doReturn(fakeEpoch).when(tsoClient).getEpoch();
@@ -84,16 +84,16 @@
 <a class="jxr_linenumber" name="74" href="#74">74</a>          TSOClient tsoClient = spy(getClient(context));
 <a class="jxr_linenumber" name="75" href="#75">75</a>          TransactionManager tm = newTransactionManager(context, tsoClient);
 <a class="jxr_linenumber" name="76" href="#76">76</a>  
-<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
+<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
 <a class="jxr_linenumber" name="78" href="#78">78</a>  
 <a class="jxr_linenumber" name="79" href="#79">79</a>              <em class="jxr_comment">// Add initial data in a transactional context</em>
 <a class="jxr_linenumber" name="80" href="#80">80</a>              Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="81" href="#81">81</a>              Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="82" href="#82">82</a>              put.add(testFamily, qualifier, data1);
+<a class="jxr_linenumber" name="82" href="#82">82</a>              put.addColumn(testFamily, qualifier, data1);
 <a class="jxr_linenumber" name="83" href="#83">83</a>              txTable.put(tx1, put);
 <a class="jxr_linenumber" name="84" href="#84">84</a>              tm.commit(tx1);
 <a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>              verify(tsoClient, times(EXPECTED_INVOCATIONS_FOR_COMMIT)).commit(anyLong(), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="86" href="#86">86</a>              verify(tsoClient, times(EXPECTED_INVOCATIONS_FOR_COMMIT)).commit(anyLong(), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>));
 <a class="jxr_linenumber" name="87" href="#87">87</a>  
 <a class="jxr_linenumber" name="88" href="#88">88</a>              <em class="jxr_comment">// Create a read-only tx and verify that commit has not been invoked again in the TSOClient</em>
 <a class="jxr_linenumber" name="89" href="#89">89</a>              AbstractTransaction readOnlyTx = (AbstractTransaction) tm.begin();
@@ -103,7 +103,7 @@
 <a class="jxr_linenumber" name="93" href="#93">93</a>              assertTrue(readOnlyTx.getWriteSet().isEmpty());
 <a class="jxr_linenumber" name="94" href="#94">94</a>              tm.commit(readOnlyTx);
 <a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>              verify(tsoClient, times(EXPECTED_INVOCATIONS_FOR_COMMIT)).commit(anyLong(), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="96" href="#96">96</a>              verify(tsoClient, times(EXPECTED_INVOCATIONS_FOR_COMMIT)).commit(anyLong(), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>));
 <a class="jxr_linenumber" name="97" href="#97">97</a>              assertEquals(readOnlyTx.getStatus(), Transaction.Status.COMMITTED_RO);
 <a class="jxr_linenumber" name="98" href="#98">98</a>          }
 <a class="jxr_linenumber" name="99" href="#99">99</a>  

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestMarkPutAsCommitted.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestMarkPutAsCommitted.html b/xref-test/org/apache/omid/transaction/TestMarkPutAsCommitted.html
new file mode 100644
index 0000000..151b0b4
--- /dev/null
+++ b/xref-test/org/apache/omid/transaction/TestMarkPutAsCommitted.html
@@ -0,0 +1,137 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TestMarkPutAsCommitted xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/testapidocs/org/apache/omid/transaction/TestMarkPutAsCommitted.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.hasCell;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.hasShadowCell;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestMarkPutAsCommitted.html">TestMarkPutAsCommitted</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestMarkPutAsCommitted.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY = <span class="jxr_string">"data"</span>;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  
+<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"test-sc"</span>);
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"testdata-1"</span>);
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>      @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellsExistanceInAutocommit(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>          HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>          <em class="jxr_comment">// Test shadow cells are created properly</em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="59" href="#59">59</a>          put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="60" href="#60">60</a>          
+<a class="jxr_linenumber" name="61" href="#61">61</a>          put = TTable.markPutAsCommitted(put, t1.getWriteTimestamp(), t1.getWriteTimestamp());
+<a class="jxr_linenumber" name="62" href="#62">62</a>        
+<a class="jxr_linenumber" name="63" href="#63">63</a>          table.getHTable().put(put);
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>          <em class="jxr_comment">// After markPutAsCommitted test that both cell and shadow cell are there</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>          assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="67" href="#67">67</a>                  <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="68" href="#68">68</a>          assertTrue(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="69" href="#69">69</a>                  <span class="jxr_string">"Shadow cell should be there"</span>);
+<a class="jxr_linenumber" name="70" href="#70">70</a>      }
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadAfterAutocommit(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="78" href="#78">78</a>  
+<a class="jxr_linenumber" name="79" href="#79">79</a>          HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="82" href="#82">82</a>          put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>          table.put(t1, put);
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>          tm.commit(t1);
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <em class="jxr_comment">// After commit test that both cell and shadow cell are there</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>          assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="90" href="#90">90</a>                  <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="91" href="#91">91</a>          assertTrue(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="92" href="#92">92</a>                  <span class="jxr_string">"Shadow cell should be there"</span>);
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>          Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="95" href="#95">95</a>          Get get = <strong class="jxr_keyword">new</strong> Get(row);
+<a class="jxr_linenumber" name="96" href="#96">96</a>          get.addColumn(family, qualifier);
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>          Result getResult = table.get(t2, get);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Values should be the same"</span>);
+<a class="jxr_linenumber" name="100" href="#100">100</a>         
+<a class="jxr_linenumber" name="101" href="#101">101</a>         
+<a class="jxr_linenumber" name="102" href="#102">102</a>         HBaseTransaction t3 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="105" href="#105">105</a>         put1.addColumn(family, qualifier, data2);
+<a class="jxr_linenumber" name="106" href="#106">106</a> 
+<a class="jxr_linenumber" name="107" href="#107">107</a>         put1 = TTable.markPutAsCommitted(put1, t3.getWriteTimestamp(), t3.getWriteTimestamp());
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>        table.getHTable().put(put1);
+<a class="jxr_linenumber" name="110" href="#110">110</a> 
+<a class="jxr_linenumber" name="111" href="#111">111</a>         <em class="jxr_comment">// After markPutAsCommitted test that both cell and shadow cell are there</em>
+<a class="jxr_linenumber" name="112" href="#112">112</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="113" href="#113">113</a>                 <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="114" href="#114">114</a>         assertTrue(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="115" href="#115">115</a>                 <span class="jxr_string">"Shadow cell should be there"</span>);
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a>         Transaction t4 = tm.begin();
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>         getResult = table.get(t4, get);
+<a class="jxr_linenumber" name="120" href="#120">120</a>         <em class="jxr_comment">//Test that t4 reads t3's write even though t3 was not committed </em>
+<a class="jxr_linenumber" name="121" href="#121">121</a>         assertTrue(Arrays.equals(data2, getResult.getValue(family, qualifier)), <span class="jxr_string">"Values should be the same"</span>);
+<a class="jxr_linenumber" name="122" href="#122">122</a>     }
+<a class="jxr_linenumber" name="123" href="#123">123</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestMultiplePut.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestMultiplePut.html b/xref-test/org/apache/omid/transaction/TestMultiplePut.html
index adbe467..15f2a7c 100644
--- a/xref-test/org/apache/omid/transaction/TestMultiplePut.html
+++ b/xref-test/org/apache/omid/transaction/TestMultiplePut.html
@@ -27,121 +27,120 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="30" href="#30">30</a>  
 <a class="jxr_linenumber" name="31" href="#31">31</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
 <a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestMultiplePut.html">TestMultiplePut</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
 <a class="jxr_linenumber" name="33" href="#33">33</a>  
 <a class="jxr_linenumber" name="34" href="#34">34</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestMultiplePut.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] testTable = Bytes.toBytes(TEST_TABLE);
-<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] col1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
-<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] col2 = Bytes.toBytes(<span class="jxr_string">"col2"</span>);
-<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data = Bytes.toBytes(<span class="jxr_string">"testData"</span>);
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>      @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMultiPutInTwoDifferentColsOfSameRowAreInTheTableAfterCommit(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="44" href="#44">44</a>  
-<a class="jxr_linenumber" name="45" href="#45">45</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>          <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="48" href="#48">48</a>  
-<a class="jxr_linenumber" name="49" href="#49">49</a>              Transaction tx = tm.begin();
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>              byte[] rowToAdd = Bytes.toBytes(1000);
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>              Put put1 = <strong class="jxr_keyword">new</strong> Put(rowToAdd);
-<a class="jxr_linenumber" name="54" href="#54">54</a>              put1.add(family, col1, data);
-<a class="jxr_linenumber" name="55" href="#55">55</a>              txTable.put(tx, put1);
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>              Put put2 = <strong class="jxr_keyword">new</strong> Put(rowToAdd);
-<a class="jxr_linenumber" name="58" href="#58">58</a>              put2.add(family, col2, data);
-<a class="jxr_linenumber" name="59" href="#59">59</a>              txTable.put(tx, put2);
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>              tm.commit(tx);
-<a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>              assertTrue(verifyValue(testTable, rowToAdd, family, col1, data), <span class="jxr_string">"Invalid value in table"</span>);
-<a class="jxr_linenumber" name="64" href="#64">64</a>              assertTrue(verifyValue(testTable, rowToAdd, family, col2, data), <span class="jxr_string">"Invalid value in table"</span>);
-<a class="jxr_linenumber" name="65" href="#65">65</a>          }
-<a class="jxr_linenumber" name="66" href="#66">66</a>  
-<a class="jxr_linenumber" name="67" href="#67">67</a>      }
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>      @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testManyManyPutsInDifferentRowsAreInTheTableAfterCommit(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NUM_ROWS_TO_ADD = 50;
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>              Transaction tx = tm.begin();
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>              <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt;= NUM_ROWS_TO_ADD; i++) {
-<a class="jxr_linenumber" name="81" href="#81">81</a>                  byte[] rowToAdd = Bytes.toBytes(i);
-<a class="jxr_linenumber" name="82" href="#82">82</a>                  byte[] dataForRowCol = Bytes.toBytes(<span class="jxr_string">"testData"</span> + i);
-<a class="jxr_linenumber" name="83" href="#83">83</a>                  Put put = <strong class="jxr_keyword">new</strong> Put(rowToAdd);
-<a class="jxr_linenumber" name="84" href="#84">84</a>                  put.add(family, col1, dataForRowCol);
-<a class="jxr_linenumber" name="85" href="#85">85</a>                  txTable.put(tx, put);
-<a class="jxr_linenumber" name="86" href="#86">86</a>              }
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>              tm.commit(tx);
-<a class="jxr_linenumber" name="89" href="#89">89</a>  
-<a class="jxr_linenumber" name="90" href="#90">90</a>              <em class="jxr_comment">// Check some of the added values are there in the table</em>
-<a class="jxr_linenumber" name="91" href="#91">91</a>              byte[] rowToCheck = Bytes.toBytes(0);
-<a class="jxr_linenumber" name="92" href="#92">92</a>              byte[] dataToCheck = Bytes.toBytes(<span class="jxr_string">"testData"</span> + 0);
-<a class="jxr_linenumber" name="93" href="#93">93</a>              assertTrue(verifyValue(testTable, rowToCheck, family, col1, dataToCheck), <span class="jxr_string">"Invalid value in table"</span>);
-<a class="jxr_linenumber" name="94" href="#94">94</a>              rowToCheck = Bytes.toBytes(NUM_ROWS_TO_ADD / 2);
-<a class="jxr_linenumber" name="95" href="#95">95</a>              dataToCheck = Bytes.toBytes(<span class="jxr_string">"testData"</span> + (NUM_ROWS_TO_ADD / 2));
-<a class="jxr_linenumber" name="96" href="#96">96</a>              assertTrue(verifyValue(testTable, rowToCheck, family, col1, dataToCheck), <span class="jxr_string">"Invalid value in table"</span>);
-<a class="jxr_linenumber" name="97" href="#97">97</a>              rowToCheck = Bytes.toBytes(NUM_ROWS_TO_ADD);
-<a class="jxr_linenumber" name="98" href="#98">98</a>              dataToCheck = Bytes.toBytes(<span class="jxr_string">"testData"</span> + NUM_ROWS_TO_ADD);
-<a class="jxr_linenumber" name="99" href="#99">99</a>              assertTrue(verifyValue(testTable, rowToCheck, family, col1, dataToCheck), <span class="jxr_string">"Invalid value in table"</span>);
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>         }
-<a class="jxr_linenumber" name="102" href="#102">102</a>     }
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetFromNonExistentRowAfterMultiplePutsReturnsNoResult(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NUM_ROWS_TO_ADD = 10;
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="110" href="#110">110</a> 
-<a class="jxr_linenumber" name="111" href="#111">111</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a>             Transaction tx = tm.begin();
-<a class="jxr_linenumber" name="114" href="#114">114</a> 
-<a class="jxr_linenumber" name="115" href="#115">115</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; NUM_ROWS_TO_ADD; i++) {
-<a class="jxr_linenumber" name="116" href="#116">116</a>                 byte[] rowToAdd = Bytes.toBytes(i);
-<a class="jxr_linenumber" name="117" href="#117">117</a>                 Put put = <strong class="jxr_keyword">new</strong> Put(rowToAdd);
-<a class="jxr_linenumber" name="118" href="#118">118</a>                 put.add(family, col1, Bytes.toBytes(<span class="jxr_string">"testData"</span> + i));
-<a class="jxr_linenumber" name="119" href="#119">119</a>                 txTable.put(tx, put);
-<a class="jxr_linenumber" name="120" href="#120">120</a>             }
-<a class="jxr_linenumber" name="121" href="#121">121</a> 
-<a class="jxr_linenumber" name="122" href="#122">122</a>             byte[] nonExistentRow = Bytes.toBytes(NUM_ROWS_TO_ADD + 5);
-<a class="jxr_linenumber" name="123" href="#123">123</a>             Get get = <strong class="jxr_keyword">new</strong> Get(nonExistentRow);
-<a class="jxr_linenumber" name="124" href="#124">124</a>             Result result = txTable.get(tx, get);
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>             assertTrue(result.isEmpty(), <span class="jxr_string">"Found a row that should not exist"</span>);
-<a class="jxr_linenumber" name="127" href="#127">127</a> 
-<a class="jxr_linenumber" name="128" href="#128">128</a>             tm.commit(tx);
-<a class="jxr_linenumber" name="129" href="#129">129</a> 
-<a class="jxr_linenumber" name="130" href="#130">130</a>         }
-<a class="jxr_linenumber" name="131" href="#131">131</a> 
-<a class="jxr_linenumber" name="132" href="#132">132</a>     }
-<a class="jxr_linenumber" name="133" href="#133">133</a> 
-<a class="jxr_linenumber" name="134" href="#134">134</a> }
+<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] col1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] col2 = Bytes.toBytes(<span class="jxr_string">"col2"</span>);
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data = Bytes.toBytes(<span class="jxr_string">"testData"</span>);
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>      @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMultiPutInTwoDifferentColsOfSameRowAreInTheTableAfterCommit(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>          <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>              Transaction tx = tm.begin();
+<a class="jxr_linenumber" name="49" href="#49">49</a>  
+<a class="jxr_linenumber" name="50" href="#50">50</a>              byte[] rowToAdd = Bytes.toBytes(1000);
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>              Put put1 = <strong class="jxr_keyword">new</strong> Put(rowToAdd);
+<a class="jxr_linenumber" name="53" href="#53">53</a>              put1.addColumn(family, col1, data);
+<a class="jxr_linenumber" name="54" href="#54">54</a>              txTable.put(tx, put1);
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>              Put put2 = <strong class="jxr_keyword">new</strong> Put(rowToAdd);
+<a class="jxr_linenumber" name="57" href="#57">57</a>              put2.addColumn(family, col2, data);
+<a class="jxr_linenumber" name="58" href="#58">58</a>              txTable.put(tx, put2);
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>              tm.commit(tx);
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>              assertTrue(verifyValue(txTable.getHTable(), rowToAdd, family, col1, data), <span class="jxr_string">"Invalid value in table"</span>);
+<a class="jxr_linenumber" name="63" href="#63">63</a>              assertTrue(verifyValue(txTable.getHTable(), rowToAdd, family, col2, data), <span class="jxr_string">"Invalid value in table"</span>);
+<a class="jxr_linenumber" name="64" href="#64">64</a>          }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      }
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>      @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testManyManyPutsInDifferentRowsAreInTheTableAfterCommit(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NUM_ROWS_TO_ADD = 50;
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>          <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>              Transaction tx = tm.begin();
+<a class="jxr_linenumber" name="78" href="#78">78</a>  
+<a class="jxr_linenumber" name="79" href="#79">79</a>              <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt;= NUM_ROWS_TO_ADD; i++) {
+<a class="jxr_linenumber" name="80" href="#80">80</a>                  byte[] rowToAdd = Bytes.toBytes(i);
+<a class="jxr_linenumber" name="81" href="#81">81</a>                  byte[] dataForRowCol = Bytes.toBytes(<span class="jxr_string">"testData"</span> + i);
+<a class="jxr_linenumber" name="82" href="#82">82</a>                  Put put = <strong class="jxr_keyword">new</strong> Put(rowToAdd);
+<a class="jxr_linenumber" name="83" href="#83">83</a>                  put.addColumn(family, col1, dataForRowCol);
+<a class="jxr_linenumber" name="84" href="#84">84</a>                  txTable.put(tx, put);
+<a class="jxr_linenumber" name="85" href="#85">85</a>              }
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>              tm.commit(tx);
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>              <em class="jxr_comment">// Check some of the added values are there in the table</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>              byte[] rowToCheck = Bytes.toBytes(0);
+<a class="jxr_linenumber" name="91" href="#91">91</a>              byte[] dataToCheck = Bytes.toBytes(<span class="jxr_string">"testData"</span> + 0);
+<a class="jxr_linenumber" name="92" href="#92">92</a>              assertTrue(verifyValue(txTable.getHTable(), rowToCheck, family, col1, dataToCheck), <span class="jxr_string">"Invalid value in table"</span>);
+<a class="jxr_linenumber" name="93" href="#93">93</a>              rowToCheck = Bytes.toBytes(NUM_ROWS_TO_ADD / 2);
+<a class="jxr_linenumber" name="94" href="#94">94</a>              dataToCheck = Bytes.toBytes(<span class="jxr_string">"testData"</span> + (NUM_ROWS_TO_ADD / 2));
+<a class="jxr_linenumber" name="95" href="#95">95</a>              assertTrue(verifyValue(txTable.getHTable(), rowToCheck, family, col1, dataToCheck), <span class="jxr_string">"Invalid value in table"</span>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>              rowToCheck = Bytes.toBytes(NUM_ROWS_TO_ADD);
+<a class="jxr_linenumber" name="97" href="#97">97</a>              dataToCheck = Bytes.toBytes(<span class="jxr_string">"testData"</span> + NUM_ROWS_TO_ADD);
+<a class="jxr_linenumber" name="98" href="#98">98</a>              assertTrue(verifyValue(txTable.getHTable(), rowToCheck, family, col1, dataToCheck), <span class="jxr_string">"Invalid value in table"</span>);
+<a class="jxr_linenumber" name="99" href="#99">99</a>  
+<a class="jxr_linenumber" name="100" href="#100">100</a>         }
+<a class="jxr_linenumber" name="101" href="#101">101</a>     }
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetFromNonExistentRowAfterMultiplePutsReturnsNoResult(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NUM_ROWS_TO_ADD = 10;
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>             Transaction tx = tm.begin();
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; NUM_ROWS_TO_ADD; i++) {
+<a class="jxr_linenumber" name="115" href="#115">115</a>                 byte[] rowToAdd = Bytes.toBytes(i);
+<a class="jxr_linenumber" name="116" href="#116">116</a>                 Put put = <strong class="jxr_keyword">new</strong> Put(rowToAdd);
+<a class="jxr_linenumber" name="117" href="#117">117</a>                 put.addColumn(family, col1, Bytes.toBytes(<span class="jxr_string">"testData"</span> + i));
+<a class="jxr_linenumber" name="118" href="#118">118</a>                 txTable.put(tx, put);
+<a class="jxr_linenumber" name="119" href="#119">119</a>             }
+<a class="jxr_linenumber" name="120" href="#120">120</a> 
+<a class="jxr_linenumber" name="121" href="#121">121</a>             byte[] nonExistentRow = Bytes.toBytes(NUM_ROWS_TO_ADD + 5);
+<a class="jxr_linenumber" name="122" href="#122">122</a>             Get get = <strong class="jxr_keyword">new</strong> Get(nonExistentRow);
+<a class="jxr_linenumber" name="123" href="#123">123</a>             Result result = txTable.get(tx, get);
+<a class="jxr_linenumber" name="124" href="#124">124</a> 
+<a class="jxr_linenumber" name="125" href="#125">125</a>             assertTrue(result.isEmpty(), <span class="jxr_string">"Found a row that should not exist"</span>);
+<a class="jxr_linenumber" name="126" href="#126">126</a> 
+<a class="jxr_linenumber" name="127" href="#127">127</a>             tm.commit(tx);
+<a class="jxr_linenumber" name="128" href="#128">128</a> 
+<a class="jxr_linenumber" name="129" href="#129">129</a>         }
+<a class="jxr_linenumber" name="130" href="#130">130</a> 
+<a class="jxr_linenumber" name="131" href="#131">131</a>     }
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestReadPath.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestReadPath.html b/xref-test/org/apache/omid/transaction/TestReadPath.html
index ab3049b..3d920fb 100644
--- a/xref-test/org/apache/omid/transaction/TestReadPath.html
+++ b/xref-test/org/apache/omid/transaction/TestReadPath.html
@@ -27,22 +27,22 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNotNull;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNotNull;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="36" href="#36">36</a>  
 <a class="jxr_linenumber" name="37" href="#37">37</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
 <a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestReadPath.html">TestReadPath</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
@@ -56,14 +56,14 @@
 <a class="jxr_linenumber" name="46" href="#46">46</a>      @Test(timeOut = 10_000)
 <a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadInterleaved(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="48" href="#48">48</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="49" href="#49">49</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="49" href="#49">49</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="50" href="#50">50</a>  
 <a class="jxr_linenumber" name="51" href="#51">51</a>          <em class="jxr_comment">// Put some data on the DB</em>
 <a class="jxr_linenumber" name="52" href="#52">52</a>          Transaction t1 = tm.begin();
 <a class="jxr_linenumber" name="53" href="#53">53</a>          Transaction t2 = tm.begin();
 <a class="jxr_linenumber" name="54" href="#54">54</a>  
 <a class="jxr_linenumber" name="55" href="#55">55</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="56" href="#56">56</a>          put.add(family, col, data);
+<a class="jxr_linenumber" name="56" href="#56">56</a>          put.addColumn(family, col, data);
 <a class="jxr_linenumber" name="57" href="#57">57</a>          table.put(t1, put);
 <a class="jxr_linenumber" name="58" href="#58">58</a>          tm.commit(t1);
 <a class="jxr_linenumber" name="59" href="#59">59</a>  
@@ -75,12 +75,12 @@
 <a class="jxr_linenumber" name="65" href="#65">65</a>      @Test(timeOut = 10_000)
 <a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadWithSeveralUncommitted(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="67" href="#67">67</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="68" href="#68">68</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="68" href="#68">68</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="69" href="#69">69</a>  
 <a class="jxr_linenumber" name="70" href="#70">70</a>          <em class="jxr_comment">// Put some data on the DB</em>
 <a class="jxr_linenumber" name="71" href="#71">71</a>          Transaction t = tm.begin();
 <a class="jxr_linenumber" name="72" href="#72">72</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="73" href="#73">73</a>          put.add(family, col, data);
+<a class="jxr_linenumber" name="73" href="#73">73</a>          put.addColumn(family, col, data);
 <a class="jxr_linenumber" name="74" href="#74">74</a>          table.put(t, put);
 <a class="jxr_linenumber" name="75" href="#75">75</a>          tm.commit(t);
 <a class="jxr_linenumber" name="76" href="#76">76</a>          List&lt;Transaction&gt; running = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
@@ -89,7 +89,7 @@
 <a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 10; ++i) {
 <a class="jxr_linenumber" name="80" href="#80">80</a>              t = tm.begin();
 <a class="jxr_linenumber" name="81" href="#81">81</a>              put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="82" href="#82">82</a>              put.add(family, col, uncommitted);
+<a class="jxr_linenumber" name="82" href="#82">82</a>              put.addColumn(family, col, uncommitted);
 <a class="jxr_linenumber" name="83" href="#83">83</a>              table.put(t, put);
 <a class="jxr_linenumber" name="84" href="#84">84</a>              running.add(t);
 <a class="jxr_linenumber" name="85" href="#85">85</a>          }


[50/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index d9b5392..a83f4cd 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -219,9 +219,9 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>139</td>
+<td>149</td>
 <td>0</td>
-<td>939</td>
+<td>1292</td>
 <td>0</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
@@ -232,9 +232,19 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;W</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;E</th></tr>
 <tr class="b">
-<td><a href="#org.apache.hadoop.hbase.regionserver.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.java</a></td>
+<td><a href="#org.apache.hadoop.hbase.coprocessor.BaseRegionObserver.java">org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java</a></td>
 <td>0</td>
-<td>1</td>
+<td>3</td>
+<td>0</td></tr>
+<tr class="a">
+<td><a href="#org.apache.hadoop.hbase.regionserver.CompactorScanner.java">org/apache/hadoop/hbase/regionserver/CompactorScanner.java</a></td>
+<td>0</td>
+<td>19</td>
+<td>0</td></tr>
+<tr class="b">
+<td><a href="#org.apache.hadoop.hbase.regionserver.RegionAccessWrapper.java">org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.java</a></td>
+<td>0</td>
+<td>8</td>
 <td>0</td></tr>
 <tr class="a">
 <td><a href="#org.apache.omid.HBaseConfigModule.java">org/apache/omid/HBaseConfigModule.java</a></td>
@@ -244,322 +254,322 @@
 <tr class="b">
 <td><a href="#org.apache.omid.HBaseShims.java">org/apache/omid/HBaseShims.java</a></td>
 <td>0</td>
-<td>21</td>
+<td>26</td>
 <td>0</td></tr>
 <tr class="a">
 <td><a href="#org.apache.omid.NetworkUtils.java">org/apache/omid/NetworkUtils.java</a></td>
 <td>0</td>
-<td>6</td>
+<td>2</td>
 <td>0</td></tr>
 <tr class="b">
-<td><a href="#org.apache.omid.ReflectionHelper.java">org/apache/omid/ReflectionHelper.java</a></td>
+<td><a href="#org.apache.omid.OmidFilterBase.java">org/apache/omid/OmidFilterBase.java</a></td>
 <td>0</td>
-<td>3</td>
+<td>4</td>
 <td>0</td></tr>
 <tr class="a">
-<td><a href="#org.apache.omid.RegionWrapper.java">org/apache/omid/RegionWrapper.java</a></td>
-<td>0</td>
-<td>10</td>
-<td>0</td></tr>
-<tr class="b">
 <td><a href="#org.apache.omid.YAMLUtils.java">org/apache/omid/YAMLUtils.java</a></td>
 <td>0</td>
-<td>8</td>
+<td>5</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.benchmarks.hbase.HBaseCommitTableTester.java">org/apache/omid/benchmarks/hbase/HBaseCommitTableTester.java</a></td>
 <td>0</td>
 <td>6</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.benchmarks.tso.RawTxRunner.java">org/apache/omid/benchmarks/tso/RawTxRunner.java</a></td>
 <td>0</td>
 <td>12</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.benchmarks.tso.TSOServerBenchmark.java">org/apache/omid/benchmarks/tso/TSOServerBenchmark.java</a></td>
 <td>0</td>
 <td>6</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.benchmarks.tso.TSOServerBenchmarkConfig.java">org/apache/omid/benchmarks/tso/TSOServerBenchmarkConfig.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.benchmarks.utils.Generator.java">org/apache/omid/benchmarks/utils/Generator.java</a></td>
 <td>0</td>
 <td>5</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.benchmarks.utils.IntegerGenerator.java">org/apache/omid/benchmarks/utils/IntegerGenerator.java</a></td>
 <td>0</td>
 <td>12</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.benchmarks.utils.ScrambledZipfianGenerator.java">org/apache/omid/benchmarks/utils/ScrambledZipfianGenerator.java</a></td>
 <td>0</td>
 <td>28</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.benchmarks.utils.UniformGenerator.java">org/apache/omid/benchmarks/utils/UniformGenerator.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.benchmarks.utils.ZipfianGenerator.java">org/apache/omid/benchmarks/utils/ZipfianGenerator.java</a></td>
 <td>0</td>
 <td>58</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.committable.CommitTable.java">org/apache/omid/committable/CommitTable.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.committable.InMemoryCommitTable.java">org/apache/omid/committable/InMemoryCommitTable.java</a></td>
 <td>0</td>
 <td>6</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.committable.NullCommitTable.java">org/apache/omid/committable/NullCommitTable.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.committable.hbase.DefaultHBaseCommitTableStorageModule.java">org/apache/omid/committable/hbase/DefaultHBaseCommitTableStorageModule.java</a></td>
 <td>0</td>
 <td>3</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.committable.hbase.HBaseCommitTable.java">org/apache/omid/committable/hbase/HBaseCommitTable.java</a></td>
 <td>0</td>
-<td>34</td>
+<td>39</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.committable.hbase.HBaseCommitTableConfig.java">org/apache/omid/committable/hbase/HBaseCommitTableConfig.java</a></td>
 <td>0</td>
 <td>3</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.committable.hbase.HBaseCommitTableStorageModule.java">org/apache/omid/committable/hbase/HBaseCommitTableStorageModule.java</a></td>
 <td>0</td>
 <td>3</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.committable.hbase.KeyGenerator.java">org/apache/omid/committable/hbase/KeyGenerator.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.committable.hbase.KeyGeneratorImplementations.java">org/apache/omid/committable/hbase/KeyGeneratorImplementations.java</a></td>
 <td>0</td>
 <td>3</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.committable.hbase.RegionSplitter.java">org/apache/omid/committable/hbase/RegionSplitter.java</a></td>
 <td>0</td>
 <td>10</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.examples.BasicExample.java">org/apache/omid/examples/BasicExample.java</a></td>
 <td>0</td>
-<td>15</td>
+<td>12</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.examples.ConfigurationExample.java">org/apache/omid/examples/ConfigurationExample.java</a></td>
 <td>0</td>
-<td>11</td>
+<td>8</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.examples.ParallelExecution.java">org/apache/omid/examples/ParallelExecution.java</a></td>
 <td>0</td>
 <td>7</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.examples.RowIdGenerator.java">org/apache/omid/examples/RowIdGenerator.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.examples.SnapshotIsolationExample.java">org/apache/omid/examples/SnapshotIsolationExample.java</a></td>
 <td>0</td>
-<td>14</td>
+<td>28</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.metrics.AbstractMetricsConfig.java">org/apache/omid/metrics/AbstractMetricsConfig.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.metrics.CodahaleMetricsConfig.java">org/apache/omid/metrics/CodahaleMetricsConfig.java</a></td>
 <td>0</td>
 <td>3</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.metrics.CodahaleMetricsProvider.java">org/apache/omid/metrics/CodahaleMetricsProvider.java</a></td>
 <td>0</td>
 <td>9</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.metrics.Counter.java">org/apache/omid/metrics/Counter.java</a></td>
 <td>0</td>
 <td>3</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.metrics.Gauge.java">org/apache/omid/metrics/Gauge.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.metrics.Histogram.java">org/apache/omid/metrics/Histogram.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.metrics.Meter.java">org/apache/omid/metrics/Meter.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.metrics.Metric.java">org/apache/omid/metrics/Metric.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.metrics.MetricsProvider.java">org/apache/omid/metrics/MetricsProvider.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.metrics.MetricsRegistry.java">org/apache/omid/metrics/MetricsRegistry.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.metrics.MetricsRegistryMap.java">org/apache/omid/metrics/MetricsRegistryMap.java</a></td>
 <td>0</td>
 <td>8</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.metrics.MetricsUtils.java">org/apache/omid/metrics/MetricsUtils.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.metrics.NullMetricsProvider.java">org/apache/omid/metrics/NullMetricsProvider.java</a></td>
 <td>0</td>
 <td>4</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.metrics.Timer.java">org/apache/omid/metrics/Timer.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.timestamp.storage.DefaultHBaseTimestampStorageModule.java">org/apache/omid/timestamp/storage/DefaultHBaseTimestampStorageModule.java</a></td>
 <td>0</td>
 <td>6</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.timestamp.storage.DefaultZKTimestampStorageModule.java">org/apache/omid/timestamp/storage/DefaultZKTimestampStorageModule.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.timestamp.storage.HBaseTimestampStorage.java">org/apache/omid/timestamp/storage/HBaseTimestampStorage.java</a></td>
 <td>0</td>
-<td>3</td>
+<td>4</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig.java">org/apache/omid/timestamp/storage/HBaseTimestampStorageConfig.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.timestamp.storage.HBaseTimestampStorageModule.java">org/apache/omid/timestamp/storage/HBaseTimestampStorageModule.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.timestamp.storage.TimestampStorage.java">org/apache/omid/timestamp/storage/TimestampStorage.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.timestamp.storage.ZKModule.java">org/apache/omid/timestamp/storage/ZKModule.java</a></td>
 <td>0</td>
 <td>7</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.timestamp.storage.ZKTimestampPaths.java">org/apache/omid/timestamp/storage/ZKTimestampPaths.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.timestamp.storage.ZKTimestampStorage.java">org/apache/omid/timestamp/storage/ZKTimestampStorage.java</a></td>
 <td>0</td>
 <td>3</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.timestamp.storage.ZKTimestampStorageModule.java">org/apache/omid/timestamp/storage/ZKTimestampStorageModule.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tools.hbase.HBaseLogin.java">org/apache/omid/tools/hbase/HBaseLogin.java</a></td>
 <td>0</td>
-<td>4</td>
+<td>2</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tools.hbase.OmidTableManager.java">org/apache/omid/tools/hbase/OmidTableManager.java</a></td>
 <td>0</td>
-<td>8</td>
+<td>31</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tools.hbase.SecureHBaseConfig.java">org/apache/omid/tools/hbase/SecureHBaseConfig.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.transaction.AbstractTransaction.java">org/apache/omid/transaction/AbstractTransaction.java</a></td>
 <td>0</td>
-<td>6</td>
+<td>25</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.transaction.AbstractTransactionManager.java">org/apache/omid/transaction/AbstractTransactionManager.java</a></td>
 <td>0</td>
 <td>17</td>
 <td>0</td></tr>
+<tr class="a">
+<td><a href="#org.apache.omid.transaction.AttributeSetSnapshotFilter.java">org/apache/omid/transaction/AttributeSetSnapshotFilter.java</a></td>
+<td>0</td>
+<td>14</td>
+<td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.transaction.CellInfo.java">org/apache/omid/transaction/CellInfo.java</a></td>
 <td>0</td>
 <td>3</td>
 <td>0</td></tr>
 <tr class="a">
-<td><a href="#org.apache.omid.transaction.CellUtils.java">org/apache/omid/transaction/CellUtils.java</a></td>
+<td><a href="#org.apache.omid.transaction.CellSkipFilterBase.java">org/apache/omid/transaction/CellSkipFilterBase.java</a></td>
 <td>0</td>
-<td>8</td>
+<td>2</td>
 <td>0</td></tr>
 <tr class="b">
-<td><a href="#org.apache.omid.transaction.ColumnWrapper.java">org/apache/omid/transaction/ColumnWrapper.java</a></td>
+<td><a href="#org.apache.omid.transaction.CellUtils.java">org/apache/omid/transaction/CellUtils.java</a></td>
 <td>0</td>
-<td>5</td>
+<td>26</td>
 <td>0</td></tr>
 <tr class="a">
-<td><a href="#org.apache.omid.transaction.CommitTimestampLocator.java">org/apache/omid/transaction/CommitTimestampLocator.java</a></td>
+<td><a href="#org.apache.omid.transaction.ColumnWrapper.java">org/apache/omid/transaction/ColumnWrapper.java</a></td>
 <td>0</td>
-<td>1</td>
+<td>5</td>
 <td>0</td></tr>
 <tr class="b">
-<td><a href="#org.apache.omid.transaction.CompactorScanner.java">org/apache/omid/transaction/CompactorScanner.java</a></td>
+<td><a href="#org.apache.omid.transaction.CommitTimestampLocator.java">org/apache/omid/transaction/CommitTimestampLocator.java</a></td>
 <td>0</td>
-<td>19</td>
+<td>1</td>
 <td>0</td></tr>
 <tr class="a">
 <td><a href="#org.apache.omid.transaction.CompactorUtil.java">org/apache/omid/transaction/CompactorUtil.java</a></td>
 <td>0</td>
-<td>11</td>
+<td>6</td>
 <td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.transaction.HBaseAsyncPostCommitter.java">org/apache/omid/transaction/HBaseAsyncPostCommitter.java</a></td>
@@ -569,7 +579,7 @@
 <tr class="a">
 <td><a href="#org.apache.omid.transaction.HBaseCellId.java">org/apache/omid/transaction/HBaseCellId.java</a></td>
 <td>0</td>
-<td>6</td>
+<td>3</td>
 <td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.transaction.HBaseOmidClientConfiguration.java">org/apache/omid/transaction/HBaseOmidClientConfiguration.java</a></td>
@@ -579,22 +589,22 @@
 <tr class="a">
 <td><a href="#org.apache.omid.transaction.HBaseSyncPostCommitter.java">org/apache/omid/transaction/HBaseSyncPostCommitter.java</a></td>
 <td>0</td>
-<td>6</td>
+<td>12</td>
 <td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.transaction.HBaseTransaction.java">org/apache/omid/transaction/HBaseTransaction.java</a></td>
 <td>0</td>
-<td>2</td>
+<td>9</td>
 <td>0</td></tr>
 <tr class="a">
 <td><a href="#org.apache.omid.transaction.HBaseTransactionClient.java">org/apache/omid/transaction/HBaseTransactionClient.java</a></td>
 <td>0</td>
-<td>2</td>
+<td>1</td>
 <td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.transaction.HBaseTransactionManager.java">org/apache/omid/transaction/HBaseTransactionManager.java</a></td>
 <td>0</td>
-<td>17</td>
+<td>31</td>
 <td>0</td></tr>
 <tr class="a">
 <td><a href="#org.apache.omid.transaction.HRegionCellGetterAdapter.java">org/apache/omid/transaction/HRegionCellGetterAdapter.java</a></td>
@@ -602,9 +612,19 @@
 <td>6</td>
 <td>0</td></tr>
 <tr class="b">
+<td><a href="#org.apache.omid.transaction.HTableAccessWrapper.java">org/apache/omid/transaction/HTableAccessWrapper.java</a></td>
+<td>0</td>
+<td>7</td>
+<td>0</td></tr>
+<tr class="a">
 <td><a href="#org.apache.omid.transaction.OmidCompactor.java">org/apache/omid/transaction/OmidCompactor.java</a></td>
 <td>0</td>
-<td>19</td>
+<td>18</td>
+<td>0</td></tr>
+<tr class="b">
+<td><a href="#org.apache.omid.transaction.OmidSnapshotFilter.java">org/apache/omid/transaction/OmidSnapshotFilter.java</a></td>
+<td>0</td>
+<td>26</td>
 <td>0</td></tr>
 <tr class="a">
 <td><a href="#org.apache.omid.transaction.PostCommitActions.java">org/apache/omid/transaction/PostCommitActions.java</a></td>
@@ -617,9 +637,19 @@
 <td>1</td>
 <td>0</td></tr>
 <tr class="a">
+<td><a href="#org.apache.omid.transaction.SnapshotFilter.java">org/apache/omid/transaction/SnapshotFilter.java</a></td>
+<td>0</td>
+<td>11</td>
+<td>0</td></tr>
+<tr class="b">
+<td><a href="#org.apache.omid.transaction.SnapshotFilterImpl.java">org/apache/omid/transaction/SnapshotFilterImpl.java</a></td>
+<td>0</td>
+<td>73</td>
+<td>0</td></tr>
+<tr class="a">
 <td><a href="#org.apache.omid.transaction.TTable.java">org/apache/omid/transaction/TTable.java</a></td>
 <td>0</td>
-<td>18</td>
+<td>62</td>
 <td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.transaction.TTableCellGetterAdapter.java">org/apache/omid/transaction/TTableCellGetterAdapter.java</a></td>
@@ -627,19 +657,29 @@
 <td>3</td>
 <td>0</td></tr>
 <tr class="a">
+<td><a href="#org.apache.omid.transaction.TableAccessWrapper.java">org/apache/omid/transaction/TableAccessWrapper.java</a></td>
+<td>0</td>
+<td>5</td>
+<td>0</td></tr>
+<tr class="b">
 <td><a href="#org.apache.omid.transaction.Transaction.java">org/apache/omid/transaction/Transaction.java</a></td>
 <td>0</td>
 <td>7</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.transaction.TransactionException.java">org/apache/omid/transaction/TransactionException.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
+<tr class="b">
+<td><a href="#org.apache.omid.transaction.TransactionFilters.java">org/apache/omid/transaction/TransactionFilters.java</a></td>
+<td>0</td>
+<td>2</td>
+<td>0</td></tr>
 <tr class="a">
 <td><a href="#org.apache.omid.transaction.TransactionManager.java">org/apache/omid/transaction/TransactionManager.java</a></td>
 <td>0</td>
-<td>4</td>
+<td>5</td>
 <td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.transaction.TransactionManagerException.java">org/apache/omid/transaction/TransactionManagerException.java</a></td>
@@ -647,200 +687,210 @@
 <td>2</td>
 <td>0</td></tr>
 <tr class="a">
-<td><a href="#org.apache.omid.tso.Batch.java">org/apache/omid/tso/Batch.java</a></td>
+<td><a href="#org.apache.omid.transaction.TransactionVisibilityFilterBase.java">org/apache/omid/transaction/TransactionVisibilityFilterBase.java</a></td>
 <td>0</td>
 <td>10</td>
 <td>0</td></tr>
 <tr class="b">
-<td><a href="#org.apache.omid.tso.BatchPoolModule.java">org/apache/omid/tso/BatchPoolModule.java</a></td>
+<td><a href="#org.apache.omid.tso.Batch.java">org/apache/omid/tso/Batch.java</a></td>
 <td>0</td>
-<td>5</td>
+<td>12</td>
 <td>0</td></tr>
 <tr class="a">
+<td><a href="#org.apache.omid.tso.BatchPoolModule.java">org/apache/omid/tso/BatchPoolModule.java</a></td>
+<td>0</td>
+<td>4</td>
+<td>0</td></tr>
+<tr class="b">
 <td><a href="#org.apache.omid.tso.CacheEvaluation.java">org/apache/omid/tso/CacheEvaluation.java</a></td>
 <td>0</td>
 <td>9</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.CommitHashMap.java">org/apache/omid/tso/CommitHashMap.java</a></td>
 <td>0</td>
 <td>5</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.DisruptorModule.java">org/apache/omid/tso/DisruptorModule.java</a></td>
 <td>0</td>
 <td>13</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.FatalExceptionHandler.java">org/apache/omid/tso/FatalExceptionHandler.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.HALeaseManagementModule.java">org/apache/omid/tso/HALeaseManagementModule.java</a></td>
 <td>0</td>
 <td>4</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.InMemoryCommitTableStorageModule.java">org/apache/omid/tso/InMemoryCommitTableStorageModule.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.InMemoryTimestampStorageModule.java">org/apache/omid/tso/InMemoryTimestampStorageModule.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.LeaseManagement.java">org/apache/omid/tso/LeaseManagement.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.LeaseManager.java">org/apache/omid/tso/LeaseManager.java</a></td>
 <td>0</td>
 <td>7</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.LongCache.java">org/apache/omid/tso/LongCache.java</a></td>
 <td>0</td>
 <td>4</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.MockPanicker.java">org/apache/omid/tso/MockPanicker.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.MonitoringContext.java">org/apache/omid/tso/MonitoringContext.java</a></td>
 <td>0</td>
 <td>11</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.NetworkInterfaceUtils.java">org/apache/omid/tso/NetworkInterfaceUtils.java</a></td>
 <td>0</td>
 <td>4</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.Panicker.java">org/apache/omid/tso/Panicker.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.PersistEvent.java">org/apache/omid/tso/PersistEvent.java</a></td>
 <td>0</td>
-<td>6</td>
+<td>7</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.PersistenceProcessor.java">org/apache/omid/tso/PersistenceProcessor.java</a></td>
 <td>0</td>
-<td>5</td>
+<td>6</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.PersistenceProcessorHandler.java">org/apache/omid/tso/PersistenceProcessorHandler.java</a></td>
 <td>0</td>
-<td>15</td>
+<td>11</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.PersistenceProcessorImpl.java">org/apache/omid/tso/PersistenceProcessorImpl.java</a></td>
 <td>0</td>
-<td>21</td>
+<td>23</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.ReplyProcessor.java">org/apache/omid/tso/ReplyProcessor.java</a></td>
 <td>0</td>
-<td>1</td>
+<td>2</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.ReplyProcessorImpl.java">org/apache/omid/tso/ReplyProcessorImpl.java</a></td>
 <td>0</td>
-<td>14</td>
+<td>15</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.RequestProcessor.java">org/apache/omid/tso/RequestProcessor.java</a></td>
 <td>0</td>
-<td>4</td>
+<td>5</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.RequestProcessorImpl.java">org/apache/omid/tso/RequestProcessorImpl.java</a></td>
 <td>0</td>
-<td>32</td>
+<td>45</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.RetryProcessor.java">org/apache/omid/tso/RetryProcessor.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.RetryProcessorImpl.java">org/apache/omid/tso/RetryProcessorImpl.java</a></td>
 <td>0</td>
 <td>18</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.RuntimeExceptionPanicker.java">org/apache/omid/tso/RuntimeExceptionPanicker.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.SystemExitPanicker.java">org/apache/omid/tso/SystemExitPanicker.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.TSOChannelHandler.java">org/apache/omid/tso/TSOChannelHandler.java</a></td>
 <td>0</td>
 <td>20</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.TSOModule.java">org/apache/omid/tso/TSOModule.java</a></td>
 <td>0</td>
 <td>5</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.TSOServer.java">org/apache/omid/tso/TSOServer.java</a></td>
 <td>0</td>
-<td>3</td>
+<td>4</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.TSOServerConfig.java">org/apache/omid/tso/TSOServerConfig.java</a></td>
 <td>0</td>
-<td>4</td>
+<td>7</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.TSOStateManager.java">org/apache/omid/tso/TSOStateManager.java</a></td>
 <td>0</td>
 <td>10</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.TSOStateManagerImpl.java">org/apache/omid/tso/TSOStateManagerImpl.java</a></td>
 <td>0</td>
 <td>5</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.TimestampOracle.java">org/apache/omid/tso/TimestampOracle.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.TimestampOracleImpl.java">org/apache/omid/tso/TimestampOracleImpl.java</a></td>
 <td>0</td>
-<td>7</td>
+<td>6</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.TsoServerDaemon.java">org/apache/omid/tso/TsoServerDaemon.java</a></td>
 <td>0</td>
 <td>2</td>
 <td>0</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.omid.tso.VoidLeaseManagementModule.java">org/apache/omid/tso/VoidLeaseManagementModule.java</a></td>
 <td>0</td>
 <td>4</td>
 <td>0</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.omid.tso.VoidLeaseManager.java">org/apache/omid/tso/VoidLeaseManager.java</a></td>
 <td>0</td>
 <td>1</td>
 <td>0</td></tr>
+<tr class="a">
+<td><a href="#org.apache.omid.tso.WorldClockOracleImpl.java">org/apache/omid/tso/WorldClockOracleImpl.java</a></td>
+<td>0</td>
+<td>15</td>
+<td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.tso.client.AbortException.java">org/apache/omid/tso/client/AbortException.java</a></td>
 <td>0</td>
@@ -874,7 +924,7 @@
 <tr class="b">
 <td><a href="#org.apache.omid.tso.client.MockTSOClient.java">org/apache/omid/tso/client/MockTSOClient.java</a></td>
 <td>0</td>
-<td>5</td>
+<td>9</td>
 <td>0</td></tr>
 <tr class="a">
 <td><a href="#org.apache.omid.tso.client.OmidClientConfiguration.java">org/apache/omid/tso/client/OmidClientConfiguration.java</a></td>
@@ -889,7 +939,7 @@
 <tr class="a">
 <td><a href="#org.apache.omid.tso.client.TSOClient.java">org/apache/omid/tso/client/TSOClient.java</a></td>
 <td>0</td>
-<td>58</td>
+<td>80</td>
 <td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.tso.client.TSOFuture.java">org/apache/omid/tso/client/TSOFuture.java</a></td>
@@ -899,7 +949,7 @@
 <tr class="a">
 <td><a href="#org.apache.omid.tso.client.TSOProtocol.java">org/apache/omid/tso/client/TSOProtocol.java</a></td>
 <td>0</td>
-<td>9</td>
+<td>18</td>
 <td>0</td></tr>
 <tr class="b">
 <td><a href="#org.apache.omid.tso.util.DummyCellIdImpl.java">org/apache/omid/tso/util/DummyCellIdImpl.java</a></td>
@@ -934,12 +984,12 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#LeftCurly">LeftCurly</a>
 <ul>
 <li>maxLineLength: <tt>&quot;120&quot;</tt></li></ul></td>
-<td>4</td>
+<td>5</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#NeedBraces">NeedBraces</a></td>
-<td>12</td>
+<td>15</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td>coding</td>
@@ -958,27 +1008,27 @@
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td></td>
-<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#OverloadMethodsDeclarationOrder">OverloadMethodsDeclarationOrder</a></td>
-<td>13</td>
+<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#OneStatementPerLine">OneStatementPerLine</a></td>
+<td>1</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td></td>
-<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#VariableDeclarationUsageDistance">VariableDeclarationUsageDistance</a></td>
-<td>4</td>
+<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#OverloadMethodsDeclarationOrder">OverloadMethodsDeclarationOrder</a></td>
+<td>14</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
-<td>imports</td>
-<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#AvoidStarImport">AvoidStarImport</a></td>
-<td>1</td>
+<td></td>
+<td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#VariableDeclarationUsageDistance">VariableDeclarationUsageDistance</a></td>
+<td>5</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
-<td></td>
+<td>imports</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#CustomImportOrder">CustomImportOrder</a>
 <ul>
 <li>sortImportsInGroupAlphabetically: <tt>&quot;true&quot;</tt></li>
 <li>customImportOrderRules: <tt>&quot;STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE&quot;</tt></li>
 <li>specialImportsRegExp: <tt>&quot;com.google&quot;</tt></li></ul></td>
-<td>215</td>
+<td>370</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td>indentation</td>
@@ -995,7 +1045,7 @@
 <li>throwsIndent: <tt>&quot;4&quot;</tt></li>
 <li>basicOffset: <tt>&quot;4&quot;</tt></li>
 <li>braceAdjustment: <tt>&quot;0&quot;</tt></li></ul></td>
-<td>13</td>
+<td>55</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td>javadoc</td>
@@ -1008,29 +1058,29 @@
 <li>allowMissingReturnTag: <tt>&quot;true&quot;</tt></li>
 <li>minLineCount: <tt>&quot;2&quot;</tt></li>
 <li>allowMissingThrowsTags: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>70</td>
+<td>76</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocParagraph">JavadocParagraph</a></td>
-<td>48</td>
+<td>49</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a></td>
-<td>12</td>
+<td>19</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>5</td>
+<td>8</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#SummaryJavadoc">SummaryJavadoc</a>
 <ul>
 <li>forbiddenSummaryFragments: <tt>&quot;^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )&quot;</tt></li></ul></td>
-<td>76</td>
+<td>82</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -1040,7 +1090,7 @@
 <tr class="b">
 <td>modifier</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_modifier.html#ModifierOrder">ModifierOrder</a></td>
-<td>27</td>
+<td>29</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td>naming</td>
@@ -1048,7 +1098,7 @@
 <ul>
 <li>allowedAbbreviationLength: <tt>&quot;4&quot;</tt></li>
 <li>ignoreFinal: <tt>&quot;false&quot;</tt></li></ul></td>
-<td>1</td>
+<td>2</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td></td>
@@ -1057,7 +1107,7 @@
 <li>allowOneCharVarInForLoop: <tt>&quot;true&quot;</tt></li>
 <li>tokens: <tt>&quot;VARIABLE_DEF&quot;</tt></li>
 <li>format: <tt>&quot;^[a-z][a-z0-9][a-zA-Z0-9]*$&quot;</tt></li></ul></td>
-<td>53</td>
+<td>63</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td></td>
@@ -1071,19 +1121,19 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_naming.html#MethodName">MethodName</a>
 <ul>
 <li>format: <tt>&quot;^[a-z][a-z0-9][a-zA-Z0-9_]*$&quot;</tt></li></ul></td>
-<td>1</td>
+<td>3</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_naming.html#ParameterName">ParameterName</a>
 <ul>
 <li>format: <tt>&quot;^[a-z][a-z0-9][a-zA-Z0-9]*$&quot;</tt></li></ul></td>
-<td>141</td>
+<td>174</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_naming.html#TypeName">TypeName</a></td>
-<td>1</td>
+<td>2</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td>sizes</td>
@@ -1091,14 +1141,14 @@
 <ul>
 <li>max: <tt>&quot;120&quot;</tt></li>
 <li>ignorePattern: <tt>&quot;^package.*|^import.*|a href|href|http://|https://|ftp://&quot;</tt></li></ul></td>
-<td>67</td>
+<td>112</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="b">
 <td>whitespace</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#EmptyLineSeparator">EmptyLineSeparator</a>
 <ul>
 <li>allowNoEmptyLineBetweenFields: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>143</td>
+<td>159</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td></td>
@@ -1113,7 +1163,7 @@
 <ul>
 <li>tokens: <tt>&quot;BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR &quot;</tt></li>
 <li>option: <tt>&quot;NL&quot;</tt></li></ul></td>
-<td>5</td>
+<td>13</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr>
 <tr class="a">
 <td></td>
@@ -1123,12 +1173,12 @@
 <li>allowEmptyTypes: <tt>&quot;true&quot;</tt></li>
 <li>allowEmptyMethods: <tt>&quot;true&quot;</tt></li>
 <li>allowEmptyConstructors: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>7</td>
+<td>16</td>
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td></tr></table></div>
 <div class="section">
 <h2><a name="Details"></a>Details</h2>
 <div class="section">
-<h3 id="org.apache.hadoop.hbase.regionserver.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.java</h3>
+<h3 id="org.apache.hadoop.hbase.coprocessor.BaseRegionObserver.java">org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
 <th>Severity</th>
@@ -1141,9 +1191,21 @@
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScannerContext.html#L18">18</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html#L18">18</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>'java.io.IOException' should be separated from previous import group.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html#L25">25</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>naming</td>
+<td>ParameterName</td>
+<td>Parameter name 'c' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html#L30">30</a></td></tr></table></div>
 <div class="section">
-<h3 id="org.apache.omid.HBaseConfigModule.java">org/apache/omid/HBaseConfigModule.java</h3>
+<h3 id="org.apache.hadoop.hbase.regionserver.CompactorScanner.java">org/apache/hadoop/hbase/regionserver/CompactorScanner.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
 <th>Severity</th>
@@ -1156,243 +1218,243 @@
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L18">18</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L18">18</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
-<td>'org.apache.omid.tools.hbase.HBaseLogin' should be separated from previous import group.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L22">22</a></td></tr>
+<td>'org.apache.omid.HBaseShims' should be separated from previous import group.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L24">24</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
-<td>Wrong lexicographical order for 'org.apache.hadoop.conf.Configuration' import. Should be before 'org.apache.omid.tools.hbase.SecureHBaseConfig'.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L24">24</a></td></tr>
+<td>Wrong lexicographical order for 'org.apache.omid.transaction.CellInfo' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L29">29</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
-<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.HBaseConfiguration' import. Should be before 'org.apache.omid.tools.hbase.SecureHBaseConfig'.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L25">25</a></td></tr>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.Cell' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L30">30</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L43">43</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.CellUtil' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L31">31</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>coding</td>
-<td>VariableDeclarationUsageDistance</td>
-<td>Distance between variable 'configuration' declaration and its first usage is 4, but allowed 3.  Consider to make that variable as final if you still need to store its value in advance (before method calls that might do side effect on original value).</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L45">45</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.KeyValue' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L32">32</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>naming</td>
-<td>ParameterName</td>
-<td>Parameter name 'o' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L61">61</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.client.Get' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L33">33</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>blocks</td>
-<td>NeedBraces</td>
-<td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L63">63</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.client.Result' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L34">34</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>blocks</td>
-<td>NeedBraces</td>
-<td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L65">65</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.coprocessor.ObserverContext' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L35">35</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>blocks</td>
-<td>NeedBraces</td>
-<td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L69">69</a></td></tr></table></div>
-<div class="section">
-<h3 id="org.apache.omid.HBaseShims.java">org/apache/omid/HBaseShims.java</h3>
-<table border="0" class="table table-striped">
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L36">36</a></td></tr>
 <tr class="a">
-<th>Severity</th>
-<th>Category</th>
-<th>Rule</th>
-<th>Message</th>
-<th>Line</th></tr>
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.util.Bytes' import. Should be before 'org.apache.omid.transaction.CellUtils'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L37">37</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>whitespace</td>
-<td>EmptyLineSeparator</td>
-<td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L18">18</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Import statement for 'org.apache.omid.committable.CommitTable.CommitTimestamp.Location.SHADOW_CELL' is in the wrong order. Should be in the 'STATIC' group, expecting not assigned imports on this line.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L51">51</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L34">34</a></td></tr>
+<td>naming</td>
+<td>MemberName</td>
+<td>Member name 'hRegion' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L62">62</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L34">34</a></td></tr>
-<tr class="a">
-<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L40">40</a></td></tr>
-<tr class="b">
-<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L40">40</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L67">67</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>naming</td>
+<td>ParameterName</td>
+<td>Parameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L67">67</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L46">46</a></td></tr>
-<tr class="b">
-<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L46">46</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L95">95</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L54">54</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L192">192</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L54">54</a></td></tr>
+<td>naming</td>
+<td>LocalVariableName</td>
+<td>Local variable name 'g' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L236">236</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L60">60</a></td></tr>
+<td>naming</td>
+<td>LocalVariableName</td>
+<td>Local variable name 'r' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L243">243</a></td></tr></table></div>
+<div class="section">
+<h3 id="org.apache.hadoop.hbase.regionserver.RegionAccessWrapper.java">org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.java</h3>
+<table border="0" class="table table-striped">
 <tr class="b">
-<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L60">60</a></td></tr>
+<th>Severity</th>
+<th>Category</th>
+<th>Rule</th>
+<th>Message</th>
+<th>Line</th></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L18">18</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html#L18">18</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L33">33</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Import statement for 'org.apache.hadoop.hbase.client.Get' is in the wrong order. Should be in the 'THIRD_PARTY_PACKAGE' group, expecting not assigned imports on this line.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html#L24">24</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L33">33</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Import statement for 'org.apache.hadoop.hbase.client.Put' is in the wrong order. Should be in the 'THIRD_PARTY_PACKAGE' group, expecting not assigned imports on this line.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html#L25">25</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L39">39</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Import statement for 'org.apache.hadoop.hbase.client.Result' is in the wrong order. Should be in the 'THIRD_PARTY_PACKAGE' group, expecting not assigned imports on this line.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html#L26">26</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L39">39</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Import statement for 'org.apache.hadoop.hbase.client.ResultScanner' is in the wrong order. Should be in the 'THIRD_PARTY_PACKAGE' group, expecting not assigned imports on this line.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html#L27">27</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L45">45</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Import statement for 'org.apache.hadoop.hbase.client.Scan' is in the wrong order. Should be in the 'THIRD_PARTY_PACKAGE' group, expecting not assigned imports on this line.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html#L28">28</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L45">45</a></td></tr>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Import statement for 'org.apache.omid.transaction.TableAccessWrapper' is in the wrong order. Should be in the 'THIRD_PARTY_PACKAGE' group, expecting not assigned imports on this line.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html#L29">29</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L53">53</a></td></tr>
+<td>naming</td>
+<td>LocalVariableName</td>
+<td>Local variable name 'i' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html#L44">44</a></td></tr></table></div>
+<div class="section">
+<h3 id="org.apache.omid.HBaseConfigModule.java">org/apache/omid/HBaseConfigModule.java</h3>
+<table border="0" class="table table-striped">
 <tr class="a">
-<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>modifier</td>
-<td>ModifierOrder</td>
-<td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L53">53</a></td></tr>
-<tr class="b">
-<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/HBaseShims.html#L59">59</a></td></tr></table></div>
-<div class="section">
-<h3 id="org.apache.omid.NetworkUtils.java">org/apache/omid/NetworkUtils.java</h3>
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Severity</th>
-<th>Category</th>
-<th>Rule</th>
-<th>Message</th>
-<th>Line</th></tr>
-<tr class="b">
+<th>Severity</th>
+<th>Category</th>
+<th>Rule</th>
+<th>Message</th>
+<th>Line</th></tr>
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/omid/NetworkUtils.html#L18">18</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L18">18</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>'org.apache.omid.tools.hbase.HBaseLogin' should be separated from previous import group.</td>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L22">22</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.conf.Configuration' import. Should be before 'org.apache.omid.tools.hbase.SecureHBaseConfig'.</td>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L24">24</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>Wrong lexicographical order for 'org.apache.hadoop.hbase.HBaseConfiguration' import. Should be before 'org.apache.omid.tools.hbase.SecureHBaseConfig'.</td>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L25">25</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/NetworkUtils.html#L35">35</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L43">43</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>coding</td>
+<td>VariableDeclarationUsageDistance</td>
+<td>Distance between variable 'configuration' declaration and its first usage is 4, but allowed 3.  Consider to make that variable as final if you still need to store its value in advance (before method calls that might do side effect on original value).</td>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L45">45</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>sizes</td>
-<td>LineLength</td>
-<td>Line is longer than 120 characters (found 148).</td>
-<td><a href="./xref/org/apache/omid/NetworkUtils.html#L43">43</a></td></tr>
+<td>naming</td>
+<td>ParameterName</td>
+<td>Parameter name 'o' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L61">61</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>whitespace</td>
-<td>OperatorWrap</td>
-<td>'||' should be on a new line.</td>
-<td><a href="./xref/org/apache/omid/NetworkUtils.html#L44">44</a></td></tr>
+<td>blocks</td>
+<td>NeedBraces</td>
+<td>'if' construct must use '{}'s.</td>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L63">63</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>indentation</td>
-<td>Indentation</td>
-<td>'if' child have incorrect indentation level 18, expected level should be 20.</td>
-<td><a href="./xref/org/apache/omid/NetworkUtils.html#L46">46</a></td></tr>
+<td>blocks</td>
+<td>NeedBraces</td>
+<td>'if' construct must use '{}'s.</td>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L65">65</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>indentation</td>
-<td>Indentation</td>
-<td>'if rcurly' have incorrect indentation level 14, expected level should be 16.</td>
-<td><a href="./xref/org/apache/omid/NetworkUtils.html#L47">47</a></td></tr></table></div>
+<td>blocks</td>
+<td>NeedBraces</td>
+<td>'if' construct must use '{}'s.</td>
+<td><a href="./xref/org/apache/omid/HBaseConfigModule.html#L69">69</a></td></tr></table></div>
 <div class="section">
-<h3 id="org.apache.omid.ReflectionHelper.java">org/apache/omid/ReflectionHelper.java</h3>
+<h3 id="org.apache.omid.HBaseShims.java">org/apache/omid/HBaseShims.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
 <th>Severity</th>
@@ -1405,90 +1467,159 @@
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/omid/ReflectionHelper.html#L18">18</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L18">18</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/ReflectionHelper.html#L25">25</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L40">40</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>modifier</td>
 <td>ModifierOrder</td>
 <td>'public' modifier out of order with the JLS suggestions.</td>
-<td><a href="./xref/org/apache/omid/ReflectionHelper.html#L25">25</a></td></tr></table></div>
-<div class="section">
-<h3 id="org.apache.omid.RegionWrapper.java">org/apache/omid/RegionWrapper.java</h3>
-<table border="0" class="table table-striped">
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L40">40</a></td></tr>
 <tr class="b">
-<th>Severity</th>
-<th>Category</th>
-<th>Rule</th>
-<th>Message</th>
-<th>Line</th></tr>
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>javadoc</td>
+<td>JavadocMethod</td>
+<td>Missing a Javadoc comment.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L46">46</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>whitespace</td>
-<td>EmptyLineSeparator</td>
-<td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L18">18</a></td></tr>
+<td>modifier</td>
+<td>ModifierOrder</td>
+<td>'public' modifier out of order with the JLS suggestions.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L46">46</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>javadoc</td>
+<td>JavadocMethod</td>
+<td>Missing a Javadoc comment.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L52">52</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>modifier</td>
+<td>ModifierOrder</td>
+<td>'public' modifier out of order with the JLS suggestions.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L52">52</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L34">34</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L60">60</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>modifier</td>
+<td>ModifierOrder</td>
+<td>'public' modifier out of order with the JLS suggestions.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L60">60</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L40">40</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L70">70</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>naming</td>
+<td>MethodName</td>
+<td>Method name 'OmidCompactionEnabled' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9_]*$'.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L70">70</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L46">46</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L80">80</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
+<td>WhitespaceAround</td>
+<td>WhitespaceAround: 'try' is not followed by whitespace. Empty blocks may only be represented as {} when not part of a multi-block statement (4.1.3)</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L82">82</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L18">18</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L18">18</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>javadoc</td>
+<td>JavadocMethod</td>
+<td>Missing a Javadoc comment.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L43">43</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>naming</td>
-<td>MemberName</td>
-<td>Member name 'hRegion' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L32">32</a></td></tr>
+<td>modifier</td>
+<td>ModifierOrder</td>
+<td>'public' modifier out of order with the JLS suggestions.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L43">43</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L34">34</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L49">49</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>naming</td>
-<td>ParameterName</td>
-<td>Parameter name 'hRegion' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L34">34</a></td></tr>
+<td>modifier</td>
+<td>ModifierOrder</td>
+<td>'public' modifier out of order with the JLS suggestions.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L49">49</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>javadoc</td>
+<td>JavadocMethod</td>
+<td>Missing a Javadoc comment.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L55">55</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>modifier</td>
+<td>ModifierOrder</td>
+<td>'public' modifier out of order with the JLS suggestions.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L55">55</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>javadoc</td>
+<td>JavadocMethod</td>
+<td>Missing a Javadoc comment.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L64">64</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>modifier</td>
+<td>ModifierOrder</td>
+<td>'public' modifier out of order with the JLS suggestions.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L64">64</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L40">40</a></td></tr>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L74">74</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>naming</td>
+<td>MethodName</td>
+<td>Method name 'OmidCompactionEnabled' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9_]*$'.</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L74">74</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/RegionWrapper.html#L46">46</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L82">82</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>whitespace</td>
+<td>WhitespaceAround</td>
+<td>WhitespaceAround: 'try' is not followed by whitespace. Empty blocks may only be represented as {} when not part of a multi-block statement (4.1.3)</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L84">84</a></td></tr></table></div>
 <div class="section">
-<h3 id="org.apache.omid.YAMLUtils.java">org/apache/omid/YAMLUtils.java</h3>
+<h3 id="org.apache.omid.NetworkUtils.java">org/apache/omid/NetworkUtils.java</h3>
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Severity</th>
@@ -1501,89 +1632,125 @@
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
-<td><a href="./xref/org/apache/omid/YAMLUtils.html#L18">18</a></td></tr>
+<td><a href="./xref/org/apache/omid/NetworkUtils.html#L18">18</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>imports</td>
-<td>CustomImportOrder</td>
-<td>'org.apache.commons.beanutils.BeanUtils' should be separated from previous import group.</td>
-<td><a href="./xref/org/apache/omid/YAMLUtils.html#L22">22</a></td></tr>
-<tr class="b">
-<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/YAMLUtils.html#L38">38</a></td></tr>
+<td><a href="./xref/org/apache/omid/NetworkUtils.html#L34">34</a></td></tr></table></div>
+<div class="section">
+<h3 id="org.apache.omid.OmidFilterBase.java">org/apache/omid/OmidFilterBase.java</h3>
+<table border="0" class="table table-striped">
+<tr class="b">
+<th>Severity</th>
+<th>Category</th>
+<th>Rule</th>
+<th>Message</th>
+<th>Line</th></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>javadoc</td>
-<td>JavadocMethod</td>
-<td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/YAMLUtils.html#L47">47</a></td></tr>
+<td>whitespace</td>
+<td>EmptyLineSeparator</td>
+<td>'package' should be separated from previous statement.</td>
+<td><a href="./xref/org/apache/omid/OmidFilterBase.html#L18">18</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/YAMLUtils.html#L56">56</a></td></tr>
+<td><a href="./xref/org/apache/omid/OmidFilterBase.html#L28">28</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
-<td>sizes</td>
-<td>LineLength</td>
-<td>Line is longer than 120 characters (found 139).</td>
-<td><a href="./xref/org/apache/omid/YAMLUtils.html#L59">59</a></td></tr>
+<td>whitespace</td>
+<td>EmptyLineSeparator</td>
+<td>'package' should be separated from previous statement.</td>
+<td><a href="./xref/org/apache/omid/OmidFilterBase.html#L18">18</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>whitespace</td>
+<td>EmptyLineSeparator</td>
+<td>'import' should be separated from previous statement.</td>
+<td><a href="./xref/org/apache/omid/OmidFilterBase.html#L19">19</a></td></tr></table></div>
+<div class="section">
+<h3 id="org.apache.omid.YAMLUtils.java">org/apache/omid/YAMLUtils.java</h3>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Severity</th>
+<th>Category</th>
+<th>Rule</th>
+<th>Message</th>
+<th>Line</th></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>whitespace</td>
+<td>EmptyLineSeparator</td>
+<td>'package' should be separated from previous statement.</td>
+<td><a href="./xref/org/apache/omid/YAMLUtils.html#L18">18</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>imports</td>
+<td>CustomImportOrder</td>
+<td>'org.apache.commons.beanutils.BeanUtils' should be separated from previous import group.</td>
+<td><a href="./xref/org/apache/omid/YAMLUtils.html#L22">22</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/YAMLUtils.html#L67">67</a></td></tr>
+<td><a href="./xref/org/apache/omid/YAMLUtils.html#L37">37</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
-<td><a href="./xref/org/apache/omid/YAMLUtils.html#L78">78</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/YAMLUtils.html#L46">46</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
+<td>sizes</td>
+<td>LineLength</td>
+<td>Line is longer than 120 characters (found 139).</td>
+<td><a href="./xref/org/apache/omid/YAMLUtils.html#L58">58</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.omid.benchmarks.hbase.HBaseCommitTableTester.java">org/apache/omid/benchmarks/hbase/HBaseCommitTableTester.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/hbase/HBaseCommitTableTester.html#L18">18</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>Wrong lexicographical order for 'org.apache.hadoop.conf.Configuration' import. Should be before 'org.apache.omid.tools.hbase.SecureHBaseConfig'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/hbase/HBaseCommitTableTester.html#L40">40</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>Wrong lexicographical order for 'org.apache.hadoop.hbase.HBaseConfiguration' import. Should be before 'org.apache.omid.tools.hbase.SecureHBaseConfig'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/hbase/HBaseCommitTableTester.html#L41">41</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
 <td>Missing a Javadoc comment.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/hbase/HBaseCommitTableTester.html#L72">72</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/hbase/HBaseCommitTableTester.html#L101">101</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>naming</td>
 <td>LocalVariableName</td>
@@ -1592,79 +1759,79 @@
 <div class="section">
 <h3 id="org.apache.omid.benchmarks.tso.RawTxRunner.java">org/apache/omid/benchmarks/tso/RawTxRunner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L18">18</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>'org.apache.omid.benchmarks.utils.IntegerGenerator' should be separated from previous import group.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L26">26</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>Wrong lexicographical order for 'org.apache.omid.tso.client.AbortException' import. Should be before 'org.apache.omid.tso.util.DummyCellIdImpl'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L32">32</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>Wrong lexicographical order for 'org.apache.omid.tso.client.CellId' import. Should be before 'org.apache.omid.tso.util.DummyCellIdImpl'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L33">33</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>Wrong lexicographical order for 'org.apache.omid.tso.client.OmidClientConfiguration' import. Should be before 'org.apache.omid.tso.util.DummyCellIdImpl'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L34">34</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>Wrong lexicographical order for 'org.apache.omid.tso.client.TSOClient' import. Should be before 'org.apache.omid.tso.util.DummyCellIdImpl'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L35">35</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>Wrong lexicographical order for 'org.apache.omid.tso.client.TSOFuture' import. Should be before 'org.apache.omid.tso.util.DummyCellIdImpl'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L36">36</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>Import statement for 'com.codahale.metrics.MetricRegistry.name' is in the wrong order. Should be in the 'STATIC' group, expecting not assigned imports on this line.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L52">52</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>naming</td>
 <td>ParameterName</td>
 <td>Parameter name 't' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L79">79</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>naming</td>
 <td>ParameterName</td>
 <td>Parameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L79">79</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>coding</td>
 <td>VariableDeclarationUsageDistance</td>
 <td>Distance between variable 'injector' declaration and its first usage is 13, but allowed 3.  Consider to make that variable as final if you still need to store its value in advance (before method calls that might do side effect on original value).</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/RawTxRunner.html#L107">107</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -1673,43 +1840,43 @@
 <div class="section">
 <h3 id="org.apache.omid.benchmarks.tso.TSOServerBenchmark.java">org/apache/omid/benchmarks/tso/TSOServerBenchmark.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/TSOServerBenchmark.html#L18">18</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
 <td>'org.slf4j.Logger' should be separated from previous import group.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/TSOServerBenchmark.html#L21">21</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>SummaryJavadoc</td>
 <td>First sentence of Javadoc is incomplete (period is missing) or not present.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/TSOServerBenchmark.html#L32">32</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>naming</td>
 <td>ParameterName</td>
 <td>Parameter name 't' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/TSOServerBenchmark.html#L54">54</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>naming</td>
 <td>ParameterName</td>
 <td>Parameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/TSOServerBenchmark.html#L54">54</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocMethod</td>
@@ -1718,19 +1885,19 @@
 <div class="section">
 <h3 id="org.apache.omid.benchmarks.tso.TSOServerBenchmarkConfig.java">org/apache/omid/benchmarks/tso/TSOServerBenchmarkConfig.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/tso/TSOServerBenchmarkConfig.html#L18">18</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>imports</td>
 <td>CustomImportOrder</td>
@@ -1739,37 +1906,37 @@
 <div class="section">
 <h3 id="org.apache.omid.benchmarks.utils.Generator.java">org/apache/omid/benchmarks/utils/Generator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocParagraph</td>
 <td>Empty line should be followed by &lt;p&gt; tag on the next line.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/Generator.html#L3">3</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocParagraph</td>
 <td>Empty line should be followed by &lt;p&gt; tag on the next line.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/Generator.html#L5">5</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/Generator.html#L12">12</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 120 characters (found 125).</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/Generator.html#L15">15</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>SummaryJavadoc</td>
@@ -1778,79 +1945,79 @@
 <div class="section">
 <h3 id="org.apache.omid.benchmarks.utils.IntegerGenerator.java">org/apache/omid/benchmarks/utils/IntegerGenerator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 120 characters (found 179).</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L2">2</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocParagraph</td>
 <td>Empty line should be followed by &lt;p&gt; tag on the next line.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L3">3</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocParagraph</td>
 <td>Empty line should be followed by &lt;p&gt; tag on the next line.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L5">5</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>whitespace</td>
 <td>EmptyLineSeparator</td>
 <td>'package' should be separated from previous statement.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L12">12</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>SummaryJavadoc</td>
 <td>First sentence of Javadoc is incomplete (period is missing) or not present.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L14">14</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>SummaryJavadoc</td>
 <td>Forbidden summary fragment.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L45">45</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L47">47</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L48">48</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>SummaryJavadoc</td>
 <td>Forbidden summary fragment.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L55">55</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 120 characters (found 126).</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L56">56</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/IntegerGenerator.html#L57">57</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_warning_sml.gif" alt="" />&#160;Warning</td>
 <td>javadoc</td>
 <td>SummaryJavadoc</td>
@@ -1859,175 +2026,175 @@
 <div class="section">
 <h3 id="org.apache.omid.benchmarks.utils.ScrambledZipfianGenerator.java">org/apache/omid/benchmarks/utils/ScrambledZipfianGenerator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Categ

<TRUNCATED>


[40/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestCompactorScanner.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestCompactorScanner.html b/xref-test/org/apache/omid/transaction/TestCompactorScanner.html
index d05cae9..99b8f66 100644
--- a/xref-test/org/apache/omid/transaction/TestCompactorScanner.html
+++ b/xref-test/org/apache/omid/transaction/TestCompactorScanner.html
@@ -33,86 +33,87 @@
 <a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue.Type;
 <a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.ObserverContext;
 <a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.HRegion;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.InternalScanner;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.Client;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.DataProvider;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.util.Queue;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.when;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestCompactorScanner.html">TestCompactorScanner</a> {
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestCompactorScanner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> TEST_TS = 1L;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      @DataProvider(name = <span class="jxr_string">"cell-retain-options"</span>)
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">public</strong> Object[][] createCellRetainOptions() {
-<a class="jxr_linenumber" name="52" href="#52">52</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> Object[][]{
-<a class="jxr_linenumber" name="53" href="#53">53</a>                  {1, <strong class="jxr_keyword">true</strong>}, {2, false},
-<a class="jxr_linenumber" name="54" href="#54">54</a>          };
-<a class="jxr_linenumber" name="55" href="#55">55</a>      }
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>      @Test(dataProvider = <span class="jxr_string">"cell-retain-options"</span>, timeOut = 60_000)
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShouldRetainNonTransactionallyDeletedCellMethod(<strong class="jxr_keyword">int</strong> optionIdx, <strong class="jxr_keyword">boolean</strong> retainOption)
-<a class="jxr_linenumber" name="59" href="#59">59</a>              <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>          <em class="jxr_comment">// Create required mocks</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>          @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="63" href="#63">63</a>          ObserverContext&lt;RegionCoprocessorEnvironment&gt; ctx = mock(ObserverContext.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="64" href="#64">64</a>          InternalScanner internalScanner = mock(InternalScanner.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="65" href="#65">65</a>          CommitTable.Client ctClient = mock(CommitTable.Client.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="66" href="#66">66</a>          @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="67" href="#67">67</a>          Queue&lt;Client&gt; queue = mock(Queue.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="68" href="#68">68</a>          RegionCoprocessorEnvironment rce = mock(RegionCoprocessorEnvironment.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="69" href="#69">69</a>          HRegion hRegion = mock(HRegion.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="70" href="#70">70</a>          HRegionInfo hRegionInfo = mock(HRegionInfo.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="71" href="#71">71</a>          SettableFuture&lt;Long&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="72" href="#72">72</a>  
-<a class="jxr_linenumber" name="73" href="#73">73</a>          <em class="jxr_comment">// Wire required mock internals</em>
-<a class="jxr_linenumber" name="74" href="#74">74</a>          f.set(TEST_TS);
-<a class="jxr_linenumber" name="75" href="#75">75</a>          when(ctClient.readLowWatermark()).thenReturn(f);
-<a class="jxr_linenumber" name="76" href="#76">76</a>          when(ctx.getEnvironment()).thenReturn(rce);
-<a class="jxr_linenumber" name="77" href="#77">77</a>          when(rce.getRegion()).thenReturn(hRegion);
-<a class="jxr_linenumber" name="78" href="#78">78</a>          when(hRegion.getRegionInfo()).thenReturn(hRegionInfo);
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          LOG.info(<span class="jxr_string">"Testing when retain is {}"</span>, retainOption);
-<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">try</strong> (CompactorScanner scanner = spy(<strong class="jxr_keyword">new</strong> CompactorScanner(ctx,
-<a class="jxr_linenumber" name="82" href="#82">82</a>                  internalScanner,
-<a class="jxr_linenumber" name="83" href="#83">83</a>                  ctClient,
-<a class="jxr_linenumber" name="84" href="#84">84</a>                  queue,
-<a class="jxr_linenumber" name="85" href="#85">85</a>                  false,
-<a class="jxr_linenumber" name="86" href="#86">86</a>                  retainOption))) {
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>              <em class="jxr_comment">// Different cell types to test</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>              KeyValue regularKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.Put);
-<a class="jxr_linenumber" name="90" href="#90">90</a>              KeyValue deleteKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.Delete);
-<a class="jxr_linenumber" name="91" href="#91">91</a>              KeyValue deleteColumnKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.DeleteColumn);
-<a class="jxr_linenumber" name="92" href="#92">92</a>              KeyValue deleteFamilyKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.DeleteFamily);
-<a class="jxr_linenumber" name="93" href="#93">93</a>              KeyValue deleteFamilyVersionKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.DeleteFamilyVersion);
-<a class="jxr_linenumber" name="94" href="#94">94</a>  
-<a class="jxr_linenumber" name="95" href="#95">95</a>              assertFalse(scanner.shouldRetainNonTransactionallyDeletedCell(regularKV));
-<a class="jxr_linenumber" name="96" href="#96">96</a>              assertEquals(scanner.shouldRetainNonTransactionallyDeletedCell(deleteKV), retainOption);
-<a class="jxr_linenumber" name="97" href="#97">97</a>              assertEquals(scanner.shouldRetainNonTransactionallyDeletedCell(deleteColumnKV), retainOption);
-<a class="jxr_linenumber" name="98" href="#98">98</a>              assertEquals(scanner.shouldRetainNonTransactionallyDeletedCell(deleteFamilyKV), retainOption);
-<a class="jxr_linenumber" name="99" href="#99">99</a>              assertEquals(scanner.shouldRetainNonTransactionallyDeletedCell(deleteFamilyVersionKV), retainOption);
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>         }
-<a class="jxr_linenumber" name="102" href="#102">102</a> 
-<a class="jxr_linenumber" name="103" href="#103">103</a>     }
-<a class="jxr_linenumber" name="104" href="#104">104</a> 
-<a class="jxr_linenumber" name="105" href="#105">105</a> }
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.CompactorScanner;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.HRegion;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.InternalScanner;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.Client;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.DataProvider;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.util.Queue;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.when;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestCompactorScanner.html">TestCompactorScanner</a> {
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestCompactorScanner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> TEST_TS = 1L;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>      @DataProvider(name = <span class="jxr_string">"cell-retain-options"</span>)
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> Object[][] createCellRetainOptions() {
+<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> Object[][]{
+<a class="jxr_linenumber" name="54" href="#54">54</a>                  {1, <strong class="jxr_keyword">true</strong>}, {2, false},
+<a class="jxr_linenumber" name="55" href="#55">55</a>          };
+<a class="jxr_linenumber" name="56" href="#56">56</a>      }
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>      @Test(dataProvider = <span class="jxr_string">"cell-retain-options"</span>, timeOut = 60_000)
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShouldRetainNonTransactionallyDeletedCellMethod(<strong class="jxr_keyword">int</strong> optionIdx, <strong class="jxr_keyword">boolean</strong> retainOption)
+<a class="jxr_linenumber" name="60" href="#60">60</a>              <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>          <em class="jxr_comment">// Create required mocks</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>          @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="64" href="#64">64</a>          ObserverContext&lt;RegionCoprocessorEnvironment&gt; ctx = mock(ObserverContext.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="65" href="#65">65</a>          InternalScanner internalScanner = mock(InternalScanner.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="66" href="#66">66</a>          CommitTable.Client ctClient = mock(CommitTable.Client.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="67" href="#67">67</a>          @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="68" href="#68">68</a>          Queue&lt;Client&gt; queue = mock(Queue.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="69" href="#69">69</a>          RegionCoprocessorEnvironment rce = mock(RegionCoprocessorEnvironment.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="70" href="#70">70</a>          HRegion hRegion = mock(HRegion.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="71" href="#71">71</a>          HRegionInfo hRegionInfo = mock(HRegionInfo.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="72" href="#72">72</a>          SettableFuture&lt;Long&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <em class="jxr_comment">// Wire required mock internals</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>          f.set(TEST_TS);
+<a class="jxr_linenumber" name="76" href="#76">76</a>          when(ctClient.readLowWatermark()).thenReturn(f);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          when(ctx.getEnvironment()).thenReturn(rce);
+<a class="jxr_linenumber" name="78" href="#78">78</a>          when(rce.getRegion()).thenReturn(hRegion);
+<a class="jxr_linenumber" name="79" href="#79">79</a>          when(hRegion.getRegionInfo()).thenReturn(hRegionInfo);
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>          LOG.info(<span class="jxr_string">"Testing when retain is {}"</span>, retainOption);
+<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">try</strong> (CompactorScanner scanner = spy(<strong class="jxr_keyword">new</strong> CompactorScanner(ctx,
+<a class="jxr_linenumber" name="83" href="#83">83</a>                  internalScanner,
+<a class="jxr_linenumber" name="84" href="#84">84</a>                  ctClient,
+<a class="jxr_linenumber" name="85" href="#85">85</a>                  queue,
+<a class="jxr_linenumber" name="86" href="#86">86</a>                  false,
+<a class="jxr_linenumber" name="87" href="#87">87</a>                  retainOption))) {
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>              <em class="jxr_comment">// Different cell types to test</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>              KeyValue regularKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.Put);
+<a class="jxr_linenumber" name="91" href="#91">91</a>              KeyValue deleteKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.Delete);
+<a class="jxr_linenumber" name="92" href="#92">92</a>              KeyValue deleteColumnKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.DeleteColumn);
+<a class="jxr_linenumber" name="93" href="#93">93</a>              KeyValue deleteFamilyKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.DeleteFamily);
+<a class="jxr_linenumber" name="94" href="#94">94</a>              KeyValue deleteFamilyVersionKV = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"test-row"</span>), TEST_TS, Type.DeleteFamilyVersion);
+<a class="jxr_linenumber" name="95" href="#95">95</a>  
+<a class="jxr_linenumber" name="96" href="#96">96</a>              assertFalse(scanner.shouldRetainNonTransactionallyDeletedCell(regularKV));
+<a class="jxr_linenumber" name="97" href="#97">97</a>              assertEquals(scanner.shouldRetainNonTransactionallyDeletedCell(deleteKV), retainOption);
+<a class="jxr_linenumber" name="98" href="#98">98</a>              assertEquals(scanner.shouldRetainNonTransactionallyDeletedCell(deleteColumnKV), retainOption);
+<a class="jxr_linenumber" name="99" href="#99">99</a>              assertEquals(scanner.shouldRetainNonTransactionallyDeletedCell(deleteFamilyKV), retainOption);
+<a class="jxr_linenumber" name="100" href="#100">100</a>             assertEquals(scanner.shouldRetainNonTransactionallyDeletedCell(deleteFamilyVersionKV), retainOption);
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>         }
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>     }
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[07/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/SnapshotFilterImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/SnapshotFilterImpl.html b/xref/org/apache/omid/transaction/SnapshotFilterImpl.html
new file mode 100644
index 0000000..a6f96c9
--- /dev/null
+++ b/xref/org/apache/omid/transaction/SnapshotFilterImpl.html
@@ -0,0 +1,712 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>SnapshotFilterImpl xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/SnapshotFilterImpl.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.CACHE;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.COMMIT_TABLE;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.NOT_PRESENT;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.SHADOW_CELL;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.metrics.ScanMetrics;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.AbstractTransaction.VisibilityLevel;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager.CommitTimestampLocatorImpl;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Function;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Predicate;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.ImmutableList;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Iterables;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Maps;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Multimaps;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilter.html">SnapshotFilter</a> {
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Logger LOG = LoggerFactory.getLogger(SnapshotFilterImpl.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> tableAccessWrapper;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> closeCommitTableClient() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="67" href="#67">67</a>          commitTableClient.close();
+<a class="jxr_linenumber" name="68" href="#68">68</a>      }
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> CommitTable.Client commitTableClient;
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> getTableAccessWrapper() {
+<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">return</strong> tableAccessWrapper;
+<a class="jxr_linenumber" name="74" href="#74">74</a>      }
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a>(<a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> tableAccessWrapper, CommitTable.Client commitTableClient) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">this</strong>.tableAccessWrapper = tableAccessWrapper;
+<a class="jxr_linenumber" name="78" href="#78">78</a>          <strong class="jxr_keyword">this</strong>.commitTableClient = commitTableClient;
+<a class="jxr_linenumber" name="79" href="#79">79</a>      }
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a>(<a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> tableAccessWrapper) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">this</strong>(tableAccessWrapper, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="83" href="#83">83</a>      }
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a>(CommitTable.Client commitTableClient) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">this</strong>(<strong class="jxr_keyword">null</strong>, commitTableClient);
+<a class="jxr_linenumber" name="87" href="#87">87</a>      }
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">void</strong> setTableAccessWrapper(<a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> tableAccessWrapper) {
+<a class="jxr_linenumber" name="90" href="#90">90</a>          <strong class="jxr_keyword">this</strong>.tableAccessWrapper = tableAccessWrapper;
+<a class="jxr_linenumber" name="91" href="#91">91</a>      }
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">void</strong> setCommitTableClient(CommitTable.Client commitTableClient) {
+<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">this</strong>.commitTableClient = commitTableClient;
+<a class="jxr_linenumber" name="95" href="#95">95</a>      }
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>      <strong class="jxr_keyword">private</strong> String getRowFamilyString(Cell cell) {
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <strong class="jxr_keyword">return</strong> Bytes.toString((CellUtil.cloneRow(cell))) + <span class="jxr_string">":"</span> + Bytes.toString(CellUtil.cloneFamily(cell));
+<a class="jxr_linenumber" name="99" href="#99">99</a>      }
+<a class="jxr_linenumber" name="100" href="#100">100</a> 
+<a class="jxr_linenumber" name="101" href="#101">101</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="102" href="#102">102</a> <em class="jxr_javadoccomment">     * Check whether a cell was deleted using family deletion marker</em>
+<a class="jxr_linenumber" name="103" href="#103">103</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="104" href="#104">104</a> <em class="jxr_javadoccomment">     * @param cell                The cell to check</em>
+<a class="jxr_linenumber" name="105" href="#105">105</a> <em class="jxr_javadoccomment">     * @param transaction         Defines the current snapshot</em>
+<a class="jxr_linenumber" name="106" href="#106">106</a> <em class="jxr_javadoccomment">     * @param familyDeletionCache Accumulates the family deletion markers to identify cells that deleted with a higher version</em>
+<a class="jxr_linenumber" name="107" href="#107">107</a> <em class="jxr_javadoccomment">     * @param commitCache         Holds shadow cells information</em>
+<a class="jxr_linenumber" name="108" href="#108">108</a> <em class="jxr_javadoccomment">     * @return Whether the cell was deleted</em>
+<a class="jxr_linenumber" name="109" href="#109">109</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> checkFamilyDeletionCache(Cell cell, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction, Map&lt;String, Long&gt; familyDeletionCache, Map&lt;Long, Long&gt; commitCache) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="111" href="#111">111</a>         String key = getRowFamilyString(cell);
+<a class="jxr_linenumber" name="112" href="#112">112</a>         Long familyDeletionCommitTimestamp = familyDeletionCache.get(key);
+<a class="jxr_linenumber" name="113" href="#113">113</a>         <strong class="jxr_keyword">if</strong> (familyDeletionCommitTimestamp != <strong class="jxr_keyword">null</strong> &amp;&amp; familyDeletionCommitTimestamp &gt;= cell.getTimestamp()) {
+<a class="jxr_linenumber" name="114" href="#114">114</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="115" href="#115">115</a>         }
+<a class="jxr_linenumber" name="116" href="#116">116</a>         <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="117" href="#117">117</a>     }
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> healShadowCell(Cell cell, <strong class="jxr_keyword">long</strong> commitTimestamp) {
+<a class="jxr_linenumber" name="120" href="#120">120</a>         Put put = <strong class="jxr_keyword">new</strong> Put(CellUtil.cloneRow(cell));
+<a class="jxr_linenumber" name="121" href="#121">121</a>         byte[] family = CellUtil.cloneFamily(cell);
+<a class="jxr_linenumber" name="122" href="#122">122</a>         byte[] shadowCellQualifier = CellUtils.addShadowCellSuffixPrefix(cell.getQualifierArray(),
+<a class="jxr_linenumber" name="123" href="#123">123</a>                                                                    cell.getQualifierOffset(),
+<a class="jxr_linenumber" name="124" href="#124">124</a>                                                                    cell.getQualifierLength());
+<a class="jxr_linenumber" name="125" href="#125">125</a>         put.addColumn(family, shadowCellQualifier, cell.getTimestamp(), Bytes.toBytes(commitTimestamp));
+<a class="jxr_linenumber" name="126" href="#126">126</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="127" href="#127">127</a>             tableAccessWrapper.put(put);
+<a class="jxr_linenumber" name="128" href="#128">128</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="129" href="#129">129</a>             LOG.warn(<span class="jxr_string">"Failed healing shadow cell for kv {}"</span>, cell, e);
+<a class="jxr_linenumber" name="130" href="#130">130</a>         }
+<a class="jxr_linenumber" name="131" href="#131">131</a>     }
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="134" href="#134">134</a> <em class="jxr_javadoccomment">     * Check if the transaction commit data is in the shadow cell</em>
+<a class="jxr_linenumber" name="135" href="#135">135</a> <em class="jxr_javadoccomment">     * @param cellStartTimestamp</em>
+<a class="jxr_linenumber" name="136" href="#136">136</a> <em class="jxr_javadoccomment">     *            the transaction start timestamp</em>
+<a class="jxr_linenumber" name="137" href="#137">137</a> <em class="jxr_javadoccomment">     *        locator</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a> <em class="jxr_javadoccomment">     *            the timestamp locator</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a> <em class="jxr_javadoccomment">     * @throws IOException</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="141" href="#141">141</a>     @Override
+<a class="jxr_linenumber" name="142" href="#142">142</a>     <strong class="jxr_keyword">public</strong> Optional&lt;CommitTimestamp&gt; readCommitTimestampFromShadowCell(<strong class="jxr_keyword">long</strong> cellStartTimestamp, <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> locator)
+<a class="jxr_linenumber" name="143" href="#143">143</a>             <strong class="jxr_keyword">throws</strong> IOException
+<a class="jxr_linenumber" name="144" href="#144">144</a>     {
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>         Optional&lt;CommitTimestamp&gt; commitTS = Optional.absent();
+<a class="jxr_linenumber" name="147" href="#147">147</a> 
+<a class="jxr_linenumber" name="148" href="#148">148</a>         Optional&lt;Long&gt; commitTimestamp = locator.readCommitTimestampFromShadowCell(cellStartTimestamp);
+<a class="jxr_linenumber" name="149" href="#149">149</a>         <strong class="jxr_keyword">if</strong> (commitTimestamp.isPresent()) {
+<a class="jxr_linenumber" name="150" href="#150">150</a>             commitTS = Optional.of(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(SHADOW_CELL, commitTimestamp.get(), <strong class="jxr_keyword">true</strong>)); <em class="jxr_comment">// Valid commit TS</em>
+<a class="jxr_linenumber" name="151" href="#151">151</a>         }
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>         <strong class="jxr_keyword">return</strong> commitTS;
+<a class="jxr_linenumber" name="154" href="#154">154</a>     }
+<a class="jxr_linenumber" name="155" href="#155">155</a> 
+<a class="jxr_linenumber" name="156" href="#156">156</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="157" href="#157">157</a> <em class="jxr_javadoccomment">     * This function returns the commit timestamp for a particular cell if the transaction was already committed in</em>
+<a class="jxr_linenumber" name="158" href="#158">158</a> <em class="jxr_javadoccomment">     * the system. In case the transaction was not committed and the cell was written by transaction initialized by a</em>
+<a class="jxr_linenumber" name="159" href="#159">159</a> <em class="jxr_javadoccomment">     * previous TSO server, an invalidation try occurs.</em>
+<a class="jxr_linenumber" name="160" href="#160">160</a> <em class="jxr_javadoccomment">     * Otherwise the function returns a value that indicates that the commit timestamp was not found.</em>
+<a class="jxr_linenumber" name="161" href="#161">161</a> <em class="jxr_javadoccomment">     * @param cellStartTimestamp</em>
+<a class="jxr_linenumber" name="162" href="#162">162</a> <em class="jxr_javadoccomment">     *          start timestamp of the cell to locate the commit timestamp for.</em>
+<a class="jxr_linenumber" name="163" href="#163">163</a> <em class="jxr_javadoccomment">     * @param epoch</em>
+<a class="jxr_linenumber" name="164" href="#164">164</a> <em class="jxr_javadoccomment">     *          the epoch of the TSO server the current tso client is working with.</em>
+<a class="jxr_linenumber" name="165" href="#165">165</a> <em class="jxr_javadoccomment">     * @param locator</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a> <em class="jxr_javadoccomment">     *          a locator to find the commit timestamp in the system.</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a> <em class="jxr_javadoccomment">     * @return the commit timestamp joint with the location where it was found</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a> <em class="jxr_javadoccomment">     *         or an object indicating that it was not found in the system</em>
+<a class="jxr_linenumber" name="169" href="#169">169</a> <em class="jxr_javadoccomment">     * @throws IOException  in case of any I/O issues</em>
+<a class="jxr_linenumber" name="170" href="#170">170</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="171" href="#171">171</a>     @Override
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> locateCellCommitTimestamp(<strong class="jxr_keyword">long</strong> cellStartTimestamp, <strong class="jxr_keyword">long</strong> epoch,
+<a class="jxr_linenumber" name="173" href="#173">173</a>                                                      <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> locator) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="176" href="#176">176</a>             <em class="jxr_comment">// 1) First check the cache</em>
+<a class="jxr_linenumber" name="177" href="#177">177</a>             Optional&lt;Long&gt; commitTimestamp = locator.readCommitTimestampFromCache(cellStartTimestamp);
+<a class="jxr_linenumber" name="178" href="#178">178</a>             <strong class="jxr_keyword">if</strong> (commitTimestamp.isPresent()) { <em class="jxr_comment">// Valid commit timestamp</em>
+<a class="jxr_linenumber" name="179" href="#179">179</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(CACHE, commitTimestamp.get(), <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="180" href="#180">180</a>             }
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>             <em class="jxr_comment">// 2) Then check the commit table</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a>             <em class="jxr_comment">// If the data was written at a previous epoch, check whether the transaction was invalidated</em>
+<a class="jxr_linenumber" name="184" href="#184">184</a>             Optional&lt;CommitTimestamp&gt; commitTimeStamp = commitTableClient.getCommitTimestamp(cellStartTimestamp).get();
+<a class="jxr_linenumber" name="185" href="#185">185</a>             <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
+<a class="jxr_linenumber" name="186" href="#186">186</a>                 <strong class="jxr_keyword">return</strong> commitTimeStamp.get();
+<a class="jxr_linenumber" name="187" href="#187">187</a>             }
+<a class="jxr_linenumber" name="188" href="#188">188</a> 
+<a class="jxr_linenumber" name="189" href="#189">189</a>             <em class="jxr_comment">// 3) Read from shadow cell</em>
+<a class="jxr_linenumber" name="190" href="#190">190</a>             commitTimeStamp = readCommitTimestampFromShadowCell(cellStartTimestamp, locator);
+<a class="jxr_linenumber" name="191" href="#191">191</a>             <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
+<a class="jxr_linenumber" name="192" href="#192">192</a>                 <strong class="jxr_keyword">return</strong> commitTimeStamp.get();
+<a class="jxr_linenumber" name="193" href="#193">193</a>             }
+<a class="jxr_linenumber" name="194" href="#194">194</a> 
+<a class="jxr_linenumber" name="195" href="#195">195</a>             <em class="jxr_comment">// 4) Check the epoch and invalidate the entry</em>
+<a class="jxr_linenumber" name="196" href="#196">196</a>             <em class="jxr_comment">// if the data was written by a transaction from a previous epoch (previous TSO)</em>
+<a class="jxr_linenumber" name="197" href="#197">197</a>             <strong class="jxr_keyword">if</strong> (cellStartTimestamp &lt; epoch) {
+<a class="jxr_linenumber" name="198" href="#198">198</a>                 <strong class="jxr_keyword">boolean</strong> invalidated = commitTableClient.tryInvalidateTransaction(cellStartTimestamp).get();
+<a class="jxr_linenumber" name="199" href="#199">199</a>                 <strong class="jxr_keyword">if</strong> (invalidated) { <em class="jxr_comment">// Invalid commit timestamp</em>
+<a class="jxr_linenumber" name="200" href="#200">200</a>                     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(COMMIT_TABLE, CommitTable.INVALID_TRANSACTION_MARKER, false);
+<a class="jxr_linenumber" name="201" href="#201">201</a>                 }
+<a class="jxr_linenumber" name="202" href="#202">202</a>             }
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>             <em class="jxr_comment">// 5) We did not manage to invalidate the transactions then check the commit table</em>
+<a class="jxr_linenumber" name="205" href="#205">205</a>             commitTimeStamp = commitTableClient.getCommitTimestamp(cellStartTimestamp).get();
+<a class="jxr_linenumber" name="206" href="#206">206</a>             <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
+<a class="jxr_linenumber" name="207" href="#207">207</a>                 <strong class="jxr_keyword">return</strong> commitTimeStamp.get();
+<a class="jxr_linenumber" name="208" href="#208">208</a>             }
+<a class="jxr_linenumber" name="209" href="#209">209</a> 
+<a class="jxr_linenumber" name="210" href="#210">210</a>             <em class="jxr_comment">// 6) Read from shadow cell</em>
+<a class="jxr_linenumber" name="211" href="#211">211</a>             commitTimeStamp = readCommitTimestampFromShadowCell(cellStartTimestamp, locator);
+<a class="jxr_linenumber" name="212" href="#212">212</a>             <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
+<a class="jxr_linenumber" name="213" href="#213">213</a>                 <strong class="jxr_keyword">return</strong> commitTimeStamp.get();
+<a class="jxr_linenumber" name="214" href="#214">214</a>             }
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>             <em class="jxr_comment">// *) Otherwise return not found</em>
+<a class="jxr_linenumber" name="217" href="#217">217</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(NOT_PRESENT, -1L <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> TODO Check if we should return this */</em>, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="218" href="#218">218</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
+<a class="jxr_linenumber" name="219" href="#219">219</a>             Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="220" href="#220">220</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Interrupted while finding commit timestamp"</span>, e);
+<a class="jxr_linenumber" name="221" href="#221">221</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="222" href="#222">222</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Problem finding commit timestamp"</span>, e);
+<a class="jxr_linenumber" name="223" href="#223">223</a>         }
+<a class="jxr_linenumber" name="224" href="#224">224</a> 
+<a class="jxr_linenumber" name="225" href="#225">225</a>     }
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>     <strong class="jxr_keyword">public</strong> Optional&lt;Long&gt; tryToLocateCellCommitTimestamp(<strong class="jxr_keyword">long</strong> epoch,
+<a class="jxr_linenumber" name="228" href="#228">228</a>             Cell cell,
+<a class="jxr_linenumber" name="229" href="#229">229</a>             Map&lt;Long, Long&gt; commitCache)
+<a class="jxr_linenumber" name="230" href="#230">230</a>                     <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="231" href="#231">231</a> 
+<a class="jxr_linenumber" name="232" href="#232">232</a>         <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> tentativeCommitTimestamp =
+<a class="jxr_linenumber" name="233" href="#233">233</a>                 locateCellCommitTimestamp(
+<a class="jxr_linenumber" name="234" href="#234">234</a>                         cell.getTimestamp(),
+<a class="jxr_linenumber" name="235" href="#235">235</a>                         epoch,
+<a class="jxr_linenumber" name="236" href="#236">236</a>                         <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">CommitTimestampLocatorImpl</a>(
+<a class="jxr_linenumber" name="237" href="#237">237</a>                                 <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(<strong class="jxr_keyword">null</strong>,
+<a class="jxr_linenumber" name="238" href="#238">238</a>                                         CellUtil.cloneRow(cell),
+<a class="jxr_linenumber" name="239" href="#239">239</a>                                         CellUtil.cloneFamily(cell),
+<a class="jxr_linenumber" name="240" href="#240">240</a>                                         CellUtil.cloneQualifier(cell),
+<a class="jxr_linenumber" name="241" href="#241">241</a>                                         cell.getTimestamp()),
+<a class="jxr_linenumber" name="242" href="#242">242</a>                                         commitCache,
+<a class="jxr_linenumber" name="243" href="#243">243</a>                                         tableAccessWrapper));
+<a class="jxr_linenumber" name="244" href="#244">244</a> 
+<a class="jxr_linenumber" name="245" href="#245">245</a>         <em class="jxr_comment">// If transaction that added the cell was invalidated</em>
+<a class="jxr_linenumber" name="246" href="#246">246</a>         <strong class="jxr_keyword">if</strong> (!tentativeCommitTimestamp.isValid()) {
+<a class="jxr_linenumber" name="247" href="#247">247</a>             <strong class="jxr_keyword">return</strong> Optional.absent();
+<a class="jxr_linenumber" name="248" href="#248">248</a>         }
+<a class="jxr_linenumber" name="249" href="#249">249</a> 
+<a class="jxr_linenumber" name="250" href="#250">250</a>         <strong class="jxr_keyword">switch</strong> (tentativeCommitTimestamp.getLocation()) {
+<a class="jxr_linenumber" name="251" href="#251">251</a>         <strong class="jxr_keyword">case</strong> COMMIT_TABLE:
+<a class="jxr_linenumber" name="252" href="#252">252</a>             <em class="jxr_comment">// If the commit timestamp is found in the persisted commit table,</em>
+<a class="jxr_linenumber" name="253" href="#253">253</a>             <em class="jxr_comment">// that means the writing process of the shadow cell in the post</em>
+<a class="jxr_linenumber" name="254" href="#254">254</a>             <em class="jxr_comment">// commit phase of the client probably failed, so we heal the shadow</em>
+<a class="jxr_linenumber" name="255" href="#255">255</a>             <em class="jxr_comment">// cell with the right commit timestamp for avoiding further reads to</em>
+<a class="jxr_linenumber" name="256" href="#256">256</a>             <em class="jxr_comment">// hit the storage</em>
+<a class="jxr_linenumber" name="257" href="#257">257</a>             healShadowCell(cell, tentativeCommitTimestamp.getValue());
+<a class="jxr_linenumber" name="258" href="#258">258</a>             <strong class="jxr_keyword">return</strong> Optional.of(tentativeCommitTimestamp.getValue());
+<a class="jxr_linenumber" name="259" href="#259">259</a>         <strong class="jxr_keyword">case</strong> CACHE:
+<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">case</strong> SHADOW_CELL:
+<a class="jxr_linenumber" name="261" href="#261">261</a>             <strong class="jxr_keyword">return</strong> Optional.of(tentativeCommitTimestamp.getValue());
+<a class="jxr_linenumber" name="262" href="#262">262</a>         <strong class="jxr_keyword">case</strong> NOT_PRESENT:
+<a class="jxr_linenumber" name="263" href="#263">263</a>             <strong class="jxr_keyword">return</strong> Optional.absent();
+<a class="jxr_linenumber" name="264" href="#264">264</a>         <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="265" href="#265">265</a>             assert (false);
+<a class="jxr_linenumber" name="266" href="#266">266</a>             <strong class="jxr_keyword">return</strong> Optional.absent();
+<a class="jxr_linenumber" name="267" href="#267">267</a>         }
+<a class="jxr_linenumber" name="268" href="#268">268</a>     }
+<a class="jxr_linenumber" name="269" href="#269">269</a>     
+<a class="jxr_linenumber" name="270" href="#270">270</a>     
+<a class="jxr_linenumber" name="271" href="#271">271</a>     <strong class="jxr_keyword">private</strong> Optional&lt;Long&gt; getCommitTimestamp(Cell kv, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction, Map&lt;Long, Long&gt; commitCache)
+<a class="jxr_linenumber" name="272" href="#272">272</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="273" href="#273">273</a> 
+<a class="jxr_linenumber" name="274" href="#274">274</a>         <strong class="jxr_keyword">long</strong> startTimestamp = transaction.getStartTimestamp();
+<a class="jxr_linenumber" name="275" href="#275">275</a> 
+<a class="jxr_linenumber" name="276" href="#276">276</a>         <strong class="jxr_keyword">if</strong> (kv.getTimestamp() == startTimestamp) {
+<a class="jxr_linenumber" name="277" href="#277">277</a>             <strong class="jxr_keyword">return</strong> Optional.of(startTimestamp);
+<a class="jxr_linenumber" name="278" href="#278">278</a>         }
+<a class="jxr_linenumber" name="279" href="#279">279</a> 
+<a class="jxr_linenumber" name="280" href="#280">280</a>         <strong class="jxr_keyword">if</strong> (commitTableClient == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="281" href="#281">281</a>             assert (transaction.getTransactionManager() != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="282" href="#282">282</a>             commitTableClient = transaction.getTransactionManager().getCommitTableClient();
+<a class="jxr_linenumber" name="283" href="#283">283</a>         }
+<a class="jxr_linenumber" name="284" href="#284">284</a> 
+<a class="jxr_linenumber" name="285" href="#285">285</a>         <strong class="jxr_keyword">return</strong> tryToLocateCellCommitTimestamp(transaction.getEpoch(), kv,
+<a class="jxr_linenumber" name="286" href="#286">286</a>                 commitCache);
+<a class="jxr_linenumber" name="287" href="#287">287</a>     }
+<a class="jxr_linenumber" name="288" href="#288">288</a>     
+<a class="jxr_linenumber" name="289" href="#289">289</a>     <strong class="jxr_keyword">private</strong> Map&lt;Long, Long&gt; buildCommitCache(List&lt;Cell&gt; rawCells) {
+<a class="jxr_linenumber" name="290" href="#290">290</a> 
+<a class="jxr_linenumber" name="291" href="#291">291</a>         Map&lt;Long, Long&gt; commitCache = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
+<a class="jxr_linenumber" name="292" href="#292">292</a> 
+<a class="jxr_linenumber" name="293" href="#293">293</a>         <strong class="jxr_keyword">for</strong> (Cell cell : rawCells) {
+<a class="jxr_linenumber" name="294" href="#294">294</a>             <strong class="jxr_keyword">if</strong> (CellUtils.isShadowCell(cell)) {
+<a class="jxr_linenumber" name="295" href="#295">295</a>                 commitCache.put(cell.getTimestamp(), Bytes.toLong(CellUtil.cloneValue(cell)));
+<a class="jxr_linenumber" name="296" href="#296">296</a>             }
+<a class="jxr_linenumber" name="297" href="#297">297</a>         }
+<a class="jxr_linenumber" name="298" href="#298">298</a> 
+<a class="jxr_linenumber" name="299" href="#299">299</a>         <strong class="jxr_keyword">return</strong> commitCache;
+<a class="jxr_linenumber" name="300" href="#300">300</a>     }
+<a class="jxr_linenumber" name="301" href="#301">301</a> 
+<a class="jxr_linenumber" name="302" href="#302">302</a> 
+<a class="jxr_linenumber" name="303" href="#303">303</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> buildFamilyDeletionCache(<a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction, List&lt;Cell&gt; rawCells, Map&lt;String, Long&gt; familyDeletionCache, Map&lt;Long, Long&gt; commitCache, Map&lt;String,byte[]&gt; attributeMap) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="304" href="#304">304</a>         <strong class="jxr_keyword">for</strong> (Cell cell : rawCells) {
+<a class="jxr_linenumber" name="305" href="#305">305</a>             <strong class="jxr_keyword">if</strong> (CellUtils.isFamilyDeleteCell(cell)) {
+<a class="jxr_linenumber" name="306" href="#306">306</a>                 String key = getRowFamilyString(cell);
+<a class="jxr_linenumber" name="307" href="#307">307</a> 
+<a class="jxr_linenumber" name="308" href="#308">308</a>                 <strong class="jxr_keyword">if</strong> (familyDeletionCache.containsKey(key))
+<a class="jxr_linenumber" name="309" href="#309">309</a>                     <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="310" href="#310">310</a> 
+<a class="jxr_linenumber" name="311" href="#311">311</a>                 Optional&lt;Long&gt; commitTimeStamp = getTSIfInTransaction(cell, transaction);
+<a class="jxr_linenumber" name="312" href="#312">312</a> 
+<a class="jxr_linenumber" name="313" href="#313">313</a>                 <strong class="jxr_keyword">if</strong> (!commitTimeStamp.isPresent()) {
+<a class="jxr_linenumber" name="314" href="#314">314</a>                     commitTimeStamp = getTSIfInSnapshot(cell, transaction, commitCache);
+<a class="jxr_linenumber" name="315" href="#315">315</a>                 }
+<a class="jxr_linenumber" name="316" href="#316">316</a> 
+<a class="jxr_linenumber" name="317" href="#317">317</a>                 <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
+<a class="jxr_linenumber" name="318" href="#318">318</a>                     familyDeletionCache.put(key, commitTimeStamp.get());
+<a class="jxr_linenumber" name="319" href="#319">319</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="320" href="#320">320</a>                     Cell lastCell = cell;
+<a class="jxr_linenumber" name="321" href="#321">321</a>                     Map&lt;Long, Long&gt; cmtCache;
+<a class="jxr_linenumber" name="322" href="#322">322</a>                     <strong class="jxr_keyword">boolean</strong> foundCommittedFamilyDeletion = false;
+<a class="jxr_linenumber" name="323" href="#323">323</a>                     <strong class="jxr_keyword">while</strong> (!foundCommittedFamilyDeletion) {
+<a class="jxr_linenumber" name="324" href="#324">324</a> 
+<a class="jxr_linenumber" name="325" href="#325">325</a>                         Get g = createPendingGet(lastCell, 3);
+<a class="jxr_linenumber" name="326" href="#326">326</a> 
+<a class="jxr_linenumber" name="327" href="#327">327</a>                         Result result = tableAccessWrapper.get(g);
+<a class="jxr_linenumber" name="328" href="#328">328</a>                         List&lt;Cell&gt; resultCells = result.listCells();
+<a class="jxr_linenumber" name="329" href="#329">329</a>                         <strong class="jxr_keyword">if</strong> (resultCells == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="330" href="#330">330</a>                             <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="331" href="#331">331</a>                         }
+<a class="jxr_linenumber" name="332" href="#332">332</a> 
+<a class="jxr_linenumber" name="333" href="#333">333</a>                         cmtCache = buildCommitCache(resultCells);
+<a class="jxr_linenumber" name="334" href="#334">334</a>                         <strong class="jxr_keyword">for</strong> (Cell c : resultCells) {
+<a class="jxr_linenumber" name="335" href="#335">335</a>                             <strong class="jxr_keyword">if</strong> (CellUtils.isFamilyDeleteCell(c)) {
+<a class="jxr_linenumber" name="336" href="#336">336</a>                                     commitTimeStamp = getTSIfInSnapshot(c, transaction, cmtCache);
+<a class="jxr_linenumber" name="337" href="#337">337</a>                                     <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
+<a class="jxr_linenumber" name="338" href="#338">338</a>                                         familyDeletionCache.put(key, commitTimeStamp.get());
+<a class="jxr_linenumber" name="339" href="#339">339</a>                                         foundCommittedFamilyDeletion = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="340" href="#340">340</a>                                         <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="341" href="#341">341</a>                                     }
+<a class="jxr_linenumber" name="342" href="#342">342</a>                                     lastCell = c;
+<a class="jxr_linenumber" name="343" href="#343">343</a>                             }
+<a class="jxr_linenumber" name="344" href="#344">344</a>                         }
+<a class="jxr_linenumber" name="345" href="#345">345</a>                     }
+<a class="jxr_linenumber" name="346" href="#346">346</a>                 }
+<a class="jxr_linenumber" name="347" href="#347">347</a>             }
+<a class="jxr_linenumber" name="348" href="#348">348</a>         }
+<a class="jxr_linenumber" name="349" href="#349">349</a>     }
+<a class="jxr_linenumber" name="350" href="#350">350</a> 
+<a class="jxr_linenumber" name="351" href="#351">351</a> 
+<a class="jxr_linenumber" name="352" href="#352">352</a>     <strong class="jxr_keyword">public</strong> Optional&lt;Long&gt; getTSIfInTransaction(Cell kv, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction) {
+<a class="jxr_linenumber" name="353" href="#353">353</a>         <strong class="jxr_keyword">long</strong> startTimestamp = transaction.getStartTimestamp();
+<a class="jxr_linenumber" name="354" href="#354">354</a>         <strong class="jxr_keyword">long</strong> readTimestamp = transaction.getReadTimestamp();
+<a class="jxr_linenumber" name="355" href="#355">355</a> 
+<a class="jxr_linenumber" name="356" href="#356">356</a>         <em class="jxr_comment">// A cell was written by a transaction if its timestamp is larger than its startTimestamp and smaller or equal to its readTimestamp.</em>
+<a class="jxr_linenumber" name="357" href="#357">357</a>         <em class="jxr_comment">// There also might be a case where the cell was written by the transaction and its timestamp equals to its writeTimestamp, however,</em>
+<a class="jxr_linenumber" name="358" href="#358">358</a>         <em class="jxr_comment">// this case occurs after checkpoint and in this case we do not want to read this data.</em>
+<a class="jxr_linenumber" name="359" href="#359">359</a>         <strong class="jxr_keyword">if</strong> (kv.getTimestamp() &gt;= startTimestamp &amp;&amp; kv.getTimestamp() &lt;= readTimestamp) {
+<a class="jxr_linenumber" name="360" href="#360">360</a>             <strong class="jxr_keyword">return</strong> Optional.of(kv.getTimestamp());
+<a class="jxr_linenumber" name="361" href="#361">361</a>         }
+<a class="jxr_linenumber" name="362" href="#362">362</a> 
+<a class="jxr_linenumber" name="363" href="#363">363</a>         <strong class="jxr_keyword">return</strong> Optional.absent();
+<a class="jxr_linenumber" name="364" href="#364">364</a>     }
+<a class="jxr_linenumber" name="365" href="#365">365</a> 
+<a class="jxr_linenumber" name="366" href="#366">366</a> 
+<a class="jxr_linenumber" name="367" href="#367">367</a>     <strong class="jxr_keyword">public</strong> Optional&lt;Long&gt; getTSIfInSnapshot(Cell kv, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction, Map&lt;Long, Long&gt; commitCache)
+<a class="jxr_linenumber" name="368" href="#368">368</a>         <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="369" href="#369">369</a> 
+<a class="jxr_linenumber" name="370" href="#370">370</a>         Optional&lt;Long&gt; commitTimestamp = getCommitTimestamp(kv, transaction, commitCache);
+<a class="jxr_linenumber" name="371" href="#371">371</a> 
+<a class="jxr_linenumber" name="372" href="#372">372</a>         <strong class="jxr_keyword">if</strong> (commitTimestamp.isPresent() &amp;&amp; commitTimestamp.get() &lt; transaction.getStartTimestamp())
+<a class="jxr_linenumber" name="373" href="#373">373</a>             <strong class="jxr_keyword">return</strong> commitTimestamp;
+<a class="jxr_linenumber" name="374" href="#374">374</a> 
+<a class="jxr_linenumber" name="375" href="#375">375</a>         <strong class="jxr_keyword">return</strong> Optional.absent();
+<a class="jxr_linenumber" name="376" href="#376">376</a>     }
+<a class="jxr_linenumber" name="377" href="#377">377</a> 
+<a class="jxr_linenumber" name="378" href="#378">378</a>     <strong class="jxr_keyword">private</strong> Get createPendingGet(Cell cell, <strong class="jxr_keyword">int</strong> versionCount) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="379" href="#379">379</a> 
+<a class="jxr_linenumber" name="380" href="#380">380</a>         Get pendingGet = <strong class="jxr_keyword">new</strong> Get(CellUtil.cloneRow(cell));
+<a class="jxr_linenumber" name="381" href="#381">381</a>         pendingGet.addColumn(CellUtil.cloneFamily(cell), CellUtil.cloneQualifier(cell));
+<a class="jxr_linenumber" name="382" href="#382">382</a>         pendingGet.addColumn(CellUtil.cloneFamily(cell), CellUtils.addShadowCellSuffixPrefix(cell.getQualifierArray(),
+<a class="jxr_linenumber" name="383" href="#383">383</a>                                                                                        cell.getQualifierOffset(),
+<a class="jxr_linenumber" name="384" href="#384">384</a>                                                                                        cell.getQualifierLength()));
+<a class="jxr_linenumber" name="385" href="#385">385</a>         pendingGet.setMaxVersions(versionCount);
+<a class="jxr_linenumber" name="386" href="#386">386</a>         pendingGet.setTimeRange(0, cell.getTimestamp());
+<a class="jxr_linenumber" name="387" href="#387">387</a> 
+<a class="jxr_linenumber" name="388" href="#388">388</a>         <strong class="jxr_keyword">return</strong> pendingGet;
+<a class="jxr_linenumber" name="389" href="#389">389</a>     }
+<a class="jxr_linenumber" name="390" href="#390">390</a> 
+<a class="jxr_linenumber" name="391" href="#391">391</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="392" href="#392">392</a> <em class="jxr_javadoccomment">     * Filters the raw results returned from HBase and returns only those belonging to the current snapshot, as defined</em>
+<a class="jxr_linenumber" name="393" href="#393">393</a> <em class="jxr_javadoccomment">     * by the transaction object. If the raw results don't contain enough information for a particular qualifier, it</em>
+<a class="jxr_linenumber" name="394" href="#394">394</a> <em class="jxr_javadoccomment">     * will request more versions from HBase.</em>
+<a class="jxr_linenumber" name="395" href="#395">395</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="396" href="#396">396</a> <em class="jxr_javadoccomment">     * @param rawCells          Raw cells that we are going to filter</em>
+<a class="jxr_linenumber" name="397" href="#397">397</a> <em class="jxr_javadoccomment">     * @param transaction       Defines the current snapshot</em>
+<a class="jxr_linenumber" name="398" href="#398">398</a> <em class="jxr_javadoccomment">     * @param versionsToRequest Number of versions requested from hbase</em>
+<a class="jxr_linenumber" name="399" href="#399">399</a> <em class="jxr_javadoccomment">     * @param familyDeletionCache Accumulates the family deletion markers to identify cells that deleted with a higher version</em>
+<a class="jxr_linenumber" name="400" href="#400">400</a> <em class="jxr_javadoccomment">     * @return Filtered KVs belonging to the transaction snapshot</em>
+<a class="jxr_linenumber" name="401" href="#401">401</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="402" href="#402">402</a>     @Override
+<a class="jxr_linenumber" name="403" href="#403">403</a>     <strong class="jxr_keyword">public</strong> List&lt;Cell&gt; filterCellsForSnapshot(List&lt;Cell&gt; rawCells, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction,
+<a class="jxr_linenumber" name="404" href="#404">404</a>                                       <strong class="jxr_keyword">int</strong> versionsToRequest, Map&lt;String, Long&gt; familyDeletionCache, Map&lt;String,byte[]&gt; attributeMap) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="405" href="#405">405</a> 
+<a class="jxr_linenumber" name="406" href="#406">406</a>         assert (rawCells != <strong class="jxr_keyword">null</strong> &amp;&amp; transaction != <strong class="jxr_keyword">null</strong> &amp;&amp; versionsToRequest &gt;= 1);
+<a class="jxr_linenumber" name="407" href="#407">407</a> 
+<a class="jxr_linenumber" name="408" href="#408">408</a>         List&lt;Cell&gt; keyValuesInSnapshot = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="409" href="#409">409</a>         List&lt;Get&gt; pendingGetsList = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="410" href="#410">410</a> 
+<a class="jxr_linenumber" name="411" href="#411">411</a>         <strong class="jxr_keyword">int</strong> numberOfVersionsToFetch = versionsToRequest * 2;
+<a class="jxr_linenumber" name="412" href="#412">412</a>         <strong class="jxr_keyword">if</strong> (numberOfVersionsToFetch &lt; 1) {
+<a class="jxr_linenumber" name="413" href="#413">413</a>             numberOfVersionsToFetch = versionsToRequest;
+<a class="jxr_linenumber" name="414" href="#414">414</a>         }
+<a class="jxr_linenumber" name="415" href="#415">415</a> 
+<a class="jxr_linenumber" name="416" href="#416">416</a>         Map&lt;Long, Long&gt; commitCache = buildCommitCache(rawCells);
+<a class="jxr_linenumber" name="417" href="#417">417</a>         buildFamilyDeletionCache(transaction, rawCells, familyDeletionCache, commitCache, attributeMap);
+<a class="jxr_linenumber" name="418" href="#418">418</a> 
+<a class="jxr_linenumber" name="419" href="#419">419</a>         ImmutableList&lt;Collection&lt;Cell&gt;&gt; filteredCells;
+<a class="jxr_linenumber" name="420" href="#420">420</a>         <strong class="jxr_keyword">if</strong> (transaction.getVisibilityLevel() == VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="421" href="#421">421</a>             filteredCells = groupCellsByColumnFilteringShadowCells(rawCells);
+<a class="jxr_linenumber" name="422" href="#422">422</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="423" href="#423">423</a>             filteredCells = groupCellsByColumnFilteringShadowCellsAndFamilyDeletion(rawCells);
+<a class="jxr_linenumber" name="424" href="#424">424</a>         }
+<a class="jxr_linenumber" name="425" href="#425">425</a> 
+<a class="jxr_linenumber" name="426" href="#426">426</a>         <strong class="jxr_keyword">for</strong> (Collection&lt;Cell&gt; columnCells : filteredCells) {
+<a class="jxr_linenumber" name="427" href="#427">427</a>             <strong class="jxr_keyword">boolean</strong> snapshotValueFound = false;
+<a class="jxr_linenumber" name="428" href="#428">428</a>             Cell oldestCell = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="429" href="#429">429</a>             <strong class="jxr_keyword">for</strong> (Cell cell : columnCells) {
+<a class="jxr_linenumber" name="430" href="#430">430</a>                 oldestCell = cell;
+<a class="jxr_linenumber" name="431" href="#431">431</a>                 <strong class="jxr_keyword">if</strong> (getTSIfInTransaction(cell, transaction).isPresent() ||
+<a class="jxr_linenumber" name="432" href="#432">432</a>                         getTSIfInSnapshot(cell, transaction, commitCache).isPresent()) {
+<a class="jxr_linenumber" name="433" href="#433">433</a> 
+<a class="jxr_linenumber" name="434" href="#434">434</a>                     <strong class="jxr_keyword">if</strong> (transaction.getVisibilityLevel() == VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="435" href="#435">435</a>                         keyValuesInSnapshot.add(cell);
+<a class="jxr_linenumber" name="436" href="#436">436</a>                         <strong class="jxr_keyword">if</strong> (getTSIfInTransaction(cell, transaction).isPresent()) {
+<a class="jxr_linenumber" name="437" href="#437">437</a>                             snapshotValueFound = false;
+<a class="jxr_linenumber" name="438" href="#438">438</a>                             <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="439" href="#439">439</a>                         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="440" href="#440">440</a>                             snapshotValueFound = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="441" href="#441">441</a>                             <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="442" href="#442">442</a>                         }
+<a class="jxr_linenumber" name="443" href="#443">443</a>                     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="444" href="#444">444</a>                         <strong class="jxr_keyword">if</strong> (!checkFamilyDeletionCache(cell, transaction, familyDeletionCache, commitCache) &amp;&amp;
+<a class="jxr_linenumber" name="445" href="#445">445</a>                                 !CellUtils.isTombstone(cell)) {
+<a class="jxr_linenumber" name="446" href="#446">446</a>                             keyValuesInSnapshot.add(cell);
+<a class="jxr_linenumber" name="447" href="#447">447</a>                         }
+<a class="jxr_linenumber" name="448" href="#448">448</a>                         snapshotValueFound = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="449" href="#449">449</a>                         <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="450" href="#450">450</a> 
+<a class="jxr_linenumber" name="451" href="#451">451</a>                     }
+<a class="jxr_linenumber" name="452" href="#452">452</a>                 }
+<a class="jxr_linenumber" name="453" href="#453">453</a>             }
+<a class="jxr_linenumber" name="454" href="#454">454</a>             <strong class="jxr_keyword">if</strong> (!snapshotValueFound) {
+<a class="jxr_linenumber" name="455" href="#455">455</a>                 assert (oldestCell != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="456" href="#456">456</a>                 Get pendingGet = createPendingGet(oldestCell, numberOfVersionsToFetch);
+<a class="jxr_linenumber" name="457" href="#457">457</a>                 <strong class="jxr_keyword">for</strong> (Map.Entry&lt;String,byte[]&gt; entry : attributeMap.entrySet()) {
+<a class="jxr_linenumber" name="458" href="#458">458</a>                     pendingGet.setAttribute(entry.getKey(), entry.getValue());
+<a class="jxr_linenumber" name="459" href="#459">459</a>                 }
+<a class="jxr_linenumber" name="460" href="#460">460</a>                 pendingGetsList.add(pendingGet);
+<a class="jxr_linenumber" name="461" href="#461">461</a>             }
+<a class="jxr_linenumber" name="462" href="#462">462</a>         }
+<a class="jxr_linenumber" name="463" href="#463">463</a> 
+<a class="jxr_linenumber" name="464" href="#464">464</a>         <strong class="jxr_keyword">if</strong> (!pendingGetsList.isEmpty()) {
+<a class="jxr_linenumber" name="465" href="#465">465</a>             Result[] pendingGetsResults = tableAccessWrapper.get(pendingGetsList);
+<a class="jxr_linenumber" name="466" href="#466">466</a>             <strong class="jxr_keyword">for</strong> (Result pendingGetResult : pendingGetsResults) {
+<a class="jxr_linenumber" name="467" href="#467">467</a>                 <strong class="jxr_keyword">if</strong> (!pendingGetResult.isEmpty()) {
+<a class="jxr_linenumber" name="468" href="#468">468</a>                     keyValuesInSnapshot.addAll(
+<a class="jxr_linenumber" name="469" href="#469">469</a>                         filterCellsForSnapshot(pendingGetResult.listCells(), transaction, numberOfVersionsToFetch, familyDeletionCache, attributeMap));
+<a class="jxr_linenumber" name="470" href="#470">470</a>                 }
+<a class="jxr_linenumber" name="471" href="#471">471</a>             }
+<a class="jxr_linenumber" name="472" href="#472">472</a>         }
+<a class="jxr_linenumber" name="473" href="#473">473</a> 
+<a class="jxr_linenumber" name="474" href="#474">474</a>         Collections.sort(keyValuesInSnapshot, KeyValue.COMPARATOR);
+<a class="jxr_linenumber" name="475" href="#475">475</a> 
+<a class="jxr_linenumber" name="476" href="#476">476</a>         <strong class="jxr_keyword">return</strong> keyValuesInSnapshot;
+<a class="jxr_linenumber" name="477" href="#477">477</a>     }
+<a class="jxr_linenumber" name="478" href="#478">478</a> 
+<a class="jxr_linenumber" name="479" href="#479">479</a>     @Override
+<a class="jxr_linenumber" name="480" href="#480">480</a>     <strong class="jxr_keyword">public</strong> Result get(Get get, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="481" href="#481">481</a>         Result result = tableAccessWrapper.get(get);
+<a class="jxr_linenumber" name="482" href="#482">482</a> 
+<a class="jxr_linenumber" name="483" href="#483">483</a>         List&lt;Cell&gt; filteredKeyValues = Collections.emptyList();
+<a class="jxr_linenumber" name="484" href="#484">484</a>         <strong class="jxr_keyword">if</strong> (!result.isEmpty()) {
+<a class="jxr_linenumber" name="485" href="#485">485</a>             filteredKeyValues = filterCellsForSnapshot(result.listCells(), transaction, get.getMaxVersions(), <strong class="jxr_keyword">new</strong> HashMap&lt;String, Long&gt;(), get.getAttributesMap());
+<a class="jxr_linenumber" name="486" href="#486">486</a>         }
+<a class="jxr_linenumber" name="487" href="#487">487</a> 
+<a class="jxr_linenumber" name="488" href="#488">488</a>         <strong class="jxr_keyword">return</strong> Result.create(filteredKeyValues);
+<a class="jxr_linenumber" name="489" href="#489">489</a>     }
+<a class="jxr_linenumber" name="490" href="#490">490</a> 
+<a class="jxr_linenumber" name="491" href="#491">491</a>     @Override
+<a class="jxr_linenumber" name="492" href="#492">492</a>     <strong class="jxr_keyword">public</strong> ResultScanner getScanner(Scan scan, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="493" href="#493">493</a> 
+<a class="jxr_linenumber" name="494" href="#494">494</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">TransactionalClientScanner</a>(transaction, scan, 1);
+<a class="jxr_linenumber" name="495" href="#495">495</a> 
+<a class="jxr_linenumber" name="496" href="#496">496</a>     }
+<a class="jxr_linenumber" name="497" href="#497">497</a> 
+<a class="jxr_linenumber" name="498" href="#498">498</a>     @Override
+<a class="jxr_linenumber" name="499" href="#499">499</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isCommitted(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId, <strong class="jxr_keyword">long</strong> epoch) <strong class="jxr_keyword">throws</strong> TransactionException {
+<a class="jxr_linenumber" name="500" href="#500">500</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="501" href="#501">501</a>             <strong class="jxr_keyword">long</strong> timestamp = hBaseCellId.getTimestamp() - (hBaseCellId.getTimestamp() % AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN);
+<a class="jxr_linenumber" name="502" href="#502">502</a>             <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> tentativeCommitTimestamp =
+<a class="jxr_linenumber" name="503" href="#503">503</a>                     locateCellCommitTimestamp(timestamp, epoch,
+<a class="jxr_linenumber" name="504" href="#504">504</a>                                               <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">CommitTimestampLocatorImpl</a>(hBaseCellId, Maps.&lt;Long, Long&gt;newHashMap(), tableAccessWrapper));
+<a class="jxr_linenumber" name="505" href="#505">505</a> 
+<a class="jxr_linenumber" name="506" href="#506">506</a>             <em class="jxr_comment">// If transaction that added the cell was invalidated</em>
+<a class="jxr_linenumber" name="507" href="#507">507</a>             <strong class="jxr_keyword">if</strong> (!tentativeCommitTimestamp.isValid()) {
+<a class="jxr_linenumber" name="508" href="#508">508</a>                 <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="509" href="#509">509</a>             }
+<a class="jxr_linenumber" name="510" href="#510">510</a> 
+<a class="jxr_linenumber" name="511" href="#511">511</a>             <strong class="jxr_keyword">switch</strong> (tentativeCommitTimestamp.getLocation()) {
+<a class="jxr_linenumber" name="512" href="#512">512</a>                 <strong class="jxr_keyword">case</strong> COMMIT_TABLE:
+<a class="jxr_linenumber" name="513" href="#513">513</a>                 <strong class="jxr_keyword">case</strong> SHADOW_CELL:
+<a class="jxr_linenumber" name="514" href="#514">514</a>                     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="515" href="#515">515</a>                 <strong class="jxr_keyword">case</strong> NOT_PRESENT:
+<a class="jxr_linenumber" name="516" href="#516">516</a>                     <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="517" href="#517">517</a>                 <strong class="jxr_keyword">case</strong> CACHE: <em class="jxr_comment">// cache was empty</em>
+<a class="jxr_linenumber" name="518" href="#518">518</a>                 <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="519" href="#519">519</a>                     <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="520" href="#520">520</a>             }
+<a class="jxr_linenumber" name="521" href="#521">521</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="522" href="#522">522</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Failure while checking if a transaction was committed"</span>, e);
+<a class="jxr_linenumber" name="523" href="#523">523</a>         }
+<a class="jxr_linenumber" name="524" href="#524">524</a>     }
+<a class="jxr_linenumber" name="525" href="#525">525</a> 
+<a class="jxr_linenumber" name="526" href="#526">526</a>     <strong class="jxr_keyword">static</strong> ImmutableList&lt;Collection&lt;Cell&gt;&gt; groupCellsByColumnFilteringShadowCellsAndFamilyDeletion(List&lt;Cell&gt; rawCells) {
+<a class="jxr_linenumber" name="527" href="#527">527</a> 
+<a class="jxr_linenumber" name="528" href="#528">528</a>         Predicate&lt;Cell&gt; shadowCellAndFamilyDeletionFilter = <strong class="jxr_keyword">new</strong> Predicate&lt;Cell&gt;() {
+<a class="jxr_linenumber" name="529" href="#529">529</a> 
+<a class="jxr_linenumber" name="530" href="#530">530</a>             @Override
+<a class="jxr_linenumber" name="531" href="#531">531</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> apply(Cell cell) {
+<a class="jxr_linenumber" name="532" href="#532">532</a>                 <strong class="jxr_keyword">boolean</strong> familyDeletionMarkerCondition = CellUtils.isFamilyDeleteCell(cell);
+<a class="jxr_linenumber" name="533" href="#533">533</a> 
+<a class="jxr_linenumber" name="534" href="#534">534</a>                 <strong class="jxr_keyword">return</strong> cell != <strong class="jxr_keyword">null</strong> &amp;&amp; !CellUtils.isShadowCell(cell) &amp;&amp; !familyDeletionMarkerCondition;
+<a class="jxr_linenumber" name="535" href="#535">535</a>             }
+<a class="jxr_linenumber" name="536" href="#536">536</a> 
+<a class="jxr_linenumber" name="537" href="#537">537</a>         };
+<a class="jxr_linenumber" name="538" href="#538">538</a> 
+<a class="jxr_linenumber" name="539" href="#539">539</a>         Function&lt;Cell, ColumnWrapper&gt; cellToColumnWrapper = <strong class="jxr_keyword">new</strong> Function&lt;Cell, ColumnWrapper&gt;() {
+<a class="jxr_linenumber" name="540" href="#540">540</a> 
+<a class="jxr_linenumber" name="541" href="#541">541</a>             @Override
+<a class="jxr_linenumber" name="542" href="#542">542</a>             <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/ColumnWrapper.html">ColumnWrapper</a> apply(Cell cell) {
+<a class="jxr_linenumber" name="543" href="#543">543</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/ColumnWrapper.html">ColumnWrapper</a>(CellUtil.cloneFamily(cell), CellUtil.cloneQualifier(cell));
+<a class="jxr_linenumber" name="544" href="#544">544</a>             }
+<a class="jxr_linenumber" name="545" href="#545">545</a> 
+<a class="jxr_linenumber" name="546" href="#546">546</a>         };
+<a class="jxr_linenumber" name="547" href="#547">547</a> 
+<a class="jxr_linenumber" name="548" href="#548">548</a>         <strong class="jxr_keyword">return</strong> Multimaps.index(Iterables.filter(rawCells, shadowCellAndFamilyDeletionFilter), cellToColumnWrapper)
+<a class="jxr_linenumber" name="549" href="#549">549</a>             .asMap().values()
+<a class="jxr_linenumber" name="550" href="#550">550</a>             .asList();
+<a class="jxr_linenumber" name="551" href="#551">551</a>     }
+<a class="jxr_linenumber" name="552" href="#552">552</a> 
+<a class="jxr_linenumber" name="553" href="#553">553</a> 
+<a class="jxr_linenumber" name="554" href="#554">554</a>     <strong class="jxr_keyword">static</strong> ImmutableList&lt;Collection&lt;Cell&gt;&gt; groupCellsByColumnFilteringShadowCells(List&lt;Cell&gt; rawCells) {
+<a class="jxr_linenumber" name="555" href="#555">555</a> 
+<a class="jxr_linenumber" name="556" href="#556">556</a>         Predicate&lt;Cell&gt; shadowCellFilter = <strong class="jxr_keyword">new</strong> Predicate&lt;Cell&gt;() {
+<a class="jxr_linenumber" name="557" href="#557">557</a>             @Override
+<a class="jxr_linenumber" name="558" href="#558">558</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> apply(Cell cell) {
+<a class="jxr_linenumber" name="559" href="#559">559</a>                 <strong class="jxr_keyword">return</strong> cell != <strong class="jxr_keyword">null</strong> &amp;&amp; !CellUtils.isShadowCell(cell);
+<a class="jxr_linenumber" name="560" href="#560">560</a>             }
+<a class="jxr_linenumber" name="561" href="#561">561</a>         };
+<a class="jxr_linenumber" name="562" href="#562">562</a> 
+<a class="jxr_linenumber" name="563" href="#563">563</a>         Function&lt;Cell, ColumnWrapper&gt; cellToColumnWrapper = <strong class="jxr_keyword">new</strong> Function&lt;Cell, ColumnWrapper&gt;() {
+<a class="jxr_linenumber" name="564" href="#564">564</a> 
+<a class="jxr_linenumber" name="565" href="#565">565</a>             @Override
+<a class="jxr_linenumber" name="566" href="#566">566</a>             <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/ColumnWrapper.html">ColumnWrapper</a> apply(Cell cell) {
+<a class="jxr_linenumber" name="567" href="#567">567</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/ColumnWrapper.html">ColumnWrapper</a>(CellUtil.cloneFamily(cell), CellUtil.cloneQualifier(cell));
+<a class="jxr_linenumber" name="568" href="#568">568</a>             }
+<a class="jxr_linenumber" name="569" href="#569">569</a> 
+<a class="jxr_linenumber" name="570" href="#570">570</a>         };
+<a class="jxr_linenumber" name="571" href="#571">571</a> 
+<a class="jxr_linenumber" name="572" href="#572">572</a>         <strong class="jxr_keyword">return</strong> Multimaps.index(Iterables.filter(rawCells, shadowCellFilter), cellToColumnWrapper)
+<a class="jxr_linenumber" name="573" href="#573">573</a>                 .asMap().values()
+<a class="jxr_linenumber" name="574" href="#574">574</a>                 .asList();
+<a class="jxr_linenumber" name="575" href="#575">575</a>     }
+<a class="jxr_linenumber" name="576" href="#576">576</a> 
+<a class="jxr_linenumber" name="577" href="#577">577</a> 
+<a class="jxr_linenumber" name="578" href="#578">578</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">TransactionalClientScanner</a> <strong class="jxr_keyword">implements</strong> ResultScanner {
+<a class="jxr_linenumber" name="579" href="#579">579</a> 
+<a class="jxr_linenumber" name="580" href="#580">580</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> state;
+<a class="jxr_linenumber" name="581" href="#581">581</a>         <strong class="jxr_keyword">private</strong> ResultScanner innerScanner;
+<a class="jxr_linenumber" name="582" href="#582">582</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> maxVersions;
+<a class="jxr_linenumber" name="583" href="#583">583</a>         Map&lt;String, Long&gt; familyDeletionCache;
+<a class="jxr_linenumber" name="584" href="#584">584</a>         <strong class="jxr_keyword">private</strong> Map&lt;String,byte[]&gt; attributeMap;
+<a class="jxr_linenumber" name="585" href="#585">585</a> 
+<a class="jxr_linenumber" name="586" href="#586">586</a>         <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">TransactionalClientScanner</a>(<a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> state, Scan scan, <strong class="jxr_keyword">int</strong> maxVersions)
+<a class="jxr_linenumber" name="587" href="#587">587</a>                 <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="588" href="#588">588</a>             <strong class="jxr_keyword">if</strong> (scan.hasFilter()) {
+<a class="jxr_linenumber" name="589" href="#589">589</a>                 LOG.warn(<span class="jxr_string">"Client scanner with filter will return un expected results. Use Coprocessor scanning"</span>);
+<a class="jxr_linenumber" name="590" href="#590">590</a>             }
+<a class="jxr_linenumber" name="591" href="#591">591</a>             <strong class="jxr_keyword">this</strong>.state = state;
+<a class="jxr_linenumber" name="592" href="#592">592</a>             <strong class="jxr_keyword">this</strong>.innerScanner = tableAccessWrapper.getScanner(scan);
+<a class="jxr_linenumber" name="593" href="#593">593</a>             <strong class="jxr_keyword">this</strong>.maxVersions = maxVersions;
+<a class="jxr_linenumber" name="594" href="#594">594</a>             <strong class="jxr_keyword">this</strong>.familyDeletionCache = <strong class="jxr_keyword">new</strong> HashMap&lt;String, Long&gt;();
+<a class="jxr_linenumber" name="595" href="#595">595</a>             <strong class="jxr_keyword">this</strong>.attributeMap = scan.getAttributesMap();
+<a class="jxr_linenumber" name="596" href="#596">596</a>         }
+<a class="jxr_linenumber" name="597" href="#597">597</a> 
+<a class="jxr_linenumber" name="598" href="#598">598</a> 
+<a class="jxr_linenumber" name="599" href="#599">599</a>         @Override
+<a class="jxr_linenumber" name="600" href="#600">600</a>         <strong class="jxr_keyword">public</strong> Result next() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="601" href="#601">601</a>             List&lt;Cell&gt; filteredResult = Collections.emptyList();
+<a class="jxr_linenumber" name="602" href="#602">602</a>             <strong class="jxr_keyword">while</strong> (filteredResult.isEmpty()) {
+<a class="jxr_linenumber" name="603" href="#603">603</a>                 Result result = innerScanner.next();
+<a class="jxr_linenumber" name="604" href="#604">604</a>                 <strong class="jxr_keyword">if</strong> (result == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="605" href="#605">605</a>                     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="606" href="#606">606</a>                 }
+<a class="jxr_linenumber" name="607" href="#607">607</a>                 <strong class="jxr_keyword">if</strong> (!result.isEmpty()) {
+<a class="jxr_linenumber" name="608" href="#608">608</a>                     filteredResult = filterCellsForSnapshot(result.listCells(), state, maxVersions, familyDeletionCache, attributeMap);
+<a class="jxr_linenumber" name="609" href="#609">609</a>                 }
+<a class="jxr_linenumber" name="610" href="#610">610</a>             }
+<a class="jxr_linenumber" name="611" href="#611">611</a>             <strong class="jxr_keyword">return</strong> Result.create(filteredResult);
+<a class="jxr_linenumber" name="612" href="#612">612</a>         }
+<a class="jxr_linenumber" name="613" href="#613">613</a> 
+<a class="jxr_linenumber" name="614" href="#614">614</a>         <em class="jxr_comment">// In principle no need to override, copied from super.next(int) to make</em>
+<a class="jxr_linenumber" name="615" href="#615">615</a>         <em class="jxr_comment">// sure it works even if super.next(int)</em>
+<a class="jxr_linenumber" name="616" href="#616">616</a>         <em class="jxr_comment">// changes its implementation</em>
+<a class="jxr_linenumber" name="617" href="#617">617</a>         @Override
+<a class="jxr_linenumber" name="618" href="#618">618</a>         <strong class="jxr_keyword">public</strong> Result[] next(<strong class="jxr_keyword">int</strong> nbRows) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="619" href="#619">619</a>             <em class="jxr_comment">// Collect values to be returned here</em>
+<a class="jxr_linenumber" name="620" href="#620">620</a>             ArrayList&lt;Result&gt; resultSets = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;(nbRows);
+<a class="jxr_linenumber" name="621" href="#621">621</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; nbRows; i++) {
+<a class="jxr_linenumber" name="622" href="#622">622</a>                 Result next = next();
+<a class="jxr_linenumber" name="623" href="#623">623</a>                 <strong class="jxr_keyword">if</strong> (next != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="624" href="#624">624</a>                     resultSets.add(next);
+<a class="jxr_linenumber" name="625" href="#625">625</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="626" href="#626">626</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="627" href="#627">627</a>                 }
+<a class="jxr_linenumber" name="628" href="#628">628</a>             }
+<a class="jxr_linenumber" name="629" href="#629">629</a>             <strong class="jxr_keyword">return</strong> resultSets.toArray(<strong class="jxr_keyword">new</strong> Result[resultSets.size()]);
+<a class="jxr_linenumber" name="630" href="#630">630</a>         }
+<a class="jxr_linenumber" name="631" href="#631">631</a> 
+<a class="jxr_linenumber" name="632" href="#632">632</a>         @Override
+<a class="jxr_linenumber" name="633" href="#633">633</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() {
+<a class="jxr_linenumber" name="634" href="#634">634</a>             innerScanner.close();
+<a class="jxr_linenumber" name="635" href="#635">635</a>         }
+<a class="jxr_linenumber" name="636" href="#636">636</a>         
+<a class="jxr_linenumber" name="637" href="#637">637</a>         <em class="jxr_comment">// So that Omid works with both HBase 1.3 and 1.4 without needing</em>
+<a class="jxr_linenumber" name="638" href="#638">638</a>         <em class="jxr_comment">// a new profile. Since this doesn't existing in 1.3, we don't</em>
+<a class="jxr_linenumber" name="639" href="#639">639</a>         <em class="jxr_comment">// add an @Override for it.</em>
+<a class="jxr_linenumber" name="640" href="#640">640</a>         <strong class="jxr_keyword">public</strong> ScanMetrics getScanMetrics() {
+<a class="jxr_linenumber" name="641" href="#641">641</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="642" href="#642">642</a>         }
+<a class="jxr_linenumber" name="643" href="#643">643</a>         
+<a class="jxr_linenumber" name="644" href="#644">644</a>         <em class="jxr_comment">// Same as above</em>
+<a class="jxr_linenumber" name="645" href="#645">645</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> renewLease() {
+<a class="jxr_linenumber" name="646" href="#646">646</a>             <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="647" href="#647">647</a>         }
+<a class="jxr_linenumber" name="648" href="#648">648</a> 
+<a class="jxr_linenumber" name="649" href="#649">649</a>         @Override
+<a class="jxr_linenumber" name="650" href="#650">650</a>         <strong class="jxr_keyword">public</strong> Iterator&lt;Result&gt; iterator() {
+<a class="jxr_linenumber" name="651" href="#651">651</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">ResultIterator</a>(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="652" href="#652">652</a>         }
+<a class="jxr_linenumber" name="653" href="#653">653</a> 
+<a class="jxr_linenumber" name="654" href="#654">654</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="655" href="#655">655</a>         <em class="jxr_comment">// --------------------------------- Helper class for TransactionalClientScanner ------------------------------</em>
+<a class="jxr_linenumber" name="656" href="#656">656</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="657" href="#657">657</a> 
+<a class="jxr_linenumber" name="658" href="#658">658</a>         <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">ResultIterator</a> <strong class="jxr_keyword">implements</strong> Iterator&lt;Result&gt; {
+<a class="jxr_linenumber" name="659" href="#659">659</a> 
+<a class="jxr_linenumber" name="660" href="#660">660</a>             <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">TransactionalClientScanner</a> scanner;
+<a class="jxr_linenumber" name="661" href="#661">661</a>             Result currentResult;
+<a class="jxr_linenumber" name="662" href="#662">662</a> 
+<a class="jxr_linenumber" name="663" href="#663">663</a>             <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">ResultIterator</a>(<a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">TransactionalClientScanner</a> scanner) {
+<a class="jxr_linenumber" name="664" href="#664">664</a>                 <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="665" href="#665">665</a>                     <strong class="jxr_keyword">this</strong>.scanner = scanner;
+<a class="jxr_linenumber" name="666" href="#666">666</a>                     currentResult = scanner.next();
+<a class="jxr_linenumber" name="667" href="#667">667</a>                 } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="668" href="#668">668</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(e);
+<a class="jxr_linenumber" name="669" href="#669">669</a>                 }
+<a class="jxr_linenumber" name="670" href="#670">670</a>             }
+<a class="jxr_linenumber" name="671" href="#671">671</a> 
+<a class="jxr_linenumber" name="672" href="#672">672</a>             @Override
+<a class="jxr_linenumber" name="673" href="#673">673</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasNext() {
+<a class="jxr_linenumber" name="674" href="#674">674</a>                 <strong class="jxr_keyword">return</strong> currentResult != <strong class="jxr_keyword">null</strong> &amp;&amp; !currentResult.isEmpty();
+<a class="jxr_linenumber" name="675" href="#675">675</a>             }
+<a class="jxr_linenumber" name="676" href="#676">676</a> 
+<a class="jxr_linenumber" name="677" href="#677">677</a>             @Override
+<a class="jxr_linenumber" name="678" href="#678">678</a>             <strong class="jxr_keyword">public</strong> Result next() {
+<a class="jxr_linenumber" name="679" href="#679">679</a>                 <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="680" href="#680">680</a>                     Result result = currentResult;
+<a class="jxr_linenumber" name="681" href="#681">681</a>                     currentResult = scanner.next();
+<a class="jxr_linenumber" name="682" href="#682">682</a>                     <strong class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="683" href="#683">683</a>                 } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="684" href="#684">684</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(e);
+<a class="jxr_linenumber" name="685" href="#685">685</a>                 }
+<a cl

<TRUNCATED>


[30/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestTransactionConflict.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestTransactionConflict.html b/xref-test/org/apache/omid/transaction/TestTransactionConflict.html
index 4a11a91..aae38d5 100644
--- a/xref-test/org/apache/omid/transaction/TestTransactionConflict.html
+++ b/xref-test/org/apache/omid/transaction/TestTransactionConflict.html
@@ -27,290 +27,500 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestTransactionConflict.html">TestTransactionConflict</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
-<a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTransactionConflict.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Admin;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  
+<a class="jxr_linenumber" name="42" href="#42">42</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestTransactionConflict.html">TestTransactionConflict</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
 <a class="jxr_linenumber" name="44" href="#44">44</a>  
-<a class="jxr_linenumber" name="45" href="#45">45</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestWriteWriteConflict(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="47" href="#47">47</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="48" href="#48">48</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>          Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="51" href="#51">51</a>          LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>          Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="54" href="#54">54</a>          LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
-<a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>          byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
-<a class="jxr_linenumber" name="57" href="#57">57</a>          byte[] fam = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="58" href="#58">58</a>          byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
-<a class="jxr_linenumber" name="59" href="#59">59</a>          byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="60" href="#60">60</a>          byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
-<a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>          Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="63" href="#63">63</a>          p.add(fam, col, data1);
-<a class="jxr_linenumber" name="64" href="#64">64</a>          tt.put(t1, p);
-<a class="jxr_linenumber" name="65" href="#65">65</a>  
-<a class="jxr_linenumber" name="66" href="#66">66</a>          Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="67" href="#67">67</a>          p2.add(fam, col, data2);
-<a class="jxr_linenumber" name="68" href="#68">68</a>          tt.put(t2, p2);
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>          tm.commit(t2);
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTransactionConflict.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestWriteWriteConflict(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="49" href="#49">49</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="50" href="#50">50</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>          Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="53" href="#53">53</a>          LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>          Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="56" href="#56">56</a>          LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>          byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
+<a class="jxr_linenumber" name="59" href="#59">59</a>          byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="60" href="#60">60</a>          byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="61" href="#61">61</a>          byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="62" href="#62">62</a>          byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>          Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="65" href="#65">65</a>          p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="66" href="#66">66</a>          tt.put(t1, p);
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>          Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="69" href="#69">69</a>          p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="70" href="#70">70</a>          tt.put(t2, p2);
 <a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="73" href="#73">73</a>              tm.commit(t1);
-<a class="jxr_linenumber" name="74" href="#74">74</a>              fail(<span class="jxr_string">"Transaction should not commit successfully"</span>);
-<a class="jxr_linenumber" name="75" href="#75">75</a>          } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
-<a class="jxr_linenumber" name="76" href="#76">76</a>          }
-<a class="jxr_linenumber" name="77" href="#77">77</a>      }
-<a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestMultiTableConflict(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="81" href="#81">81</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="82" href="#82">82</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="83" href="#83">83</a>          String table2 = TEST_TABLE + 2;
-<a class="jxr_linenumber" name="84" href="#84">84</a>          TableName table2Name = TableName.valueOf(table2);
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>          HBaseAdmin admin = <strong class="jxr_keyword">new</strong> HBaseAdmin(hbaseConf);
+<a class="jxr_linenumber" name="72" href="#72">72</a>          tm.commit(t2);
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="75" href="#75">75</a>              tm.commit(t1);
+<a class="jxr_linenumber" name="76" href="#76">76</a>              fail(<span class="jxr_string">"Transaction should not commit successfully"</span>);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="78" href="#78">78</a>          }
+<a class="jxr_linenumber" name="79" href="#79">79</a>      }
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestMultiTableConflict(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="83" href="#83">83</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="84" href="#84">84</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="85" href="#85">85</a>          String table2 = TEST_TABLE + 2;
+<a class="jxr_linenumber" name="86" href="#86">86</a>          TableName table2Name = TableName.valueOf(table2);
 <a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>          <strong class="jxr_keyword">if</strong> (!admin.tableExists(table2)) {
-<a class="jxr_linenumber" name="89" href="#89">89</a>              HTableDescriptor desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(table2Name);
-<a class="jxr_linenumber" name="90" href="#90">90</a>              HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(TEST_FAMILY);
-<a class="jxr_linenumber" name="91" href="#91">91</a>              datafam.setMaxVersions(Integer.MAX_VALUE);
-<a class="jxr_linenumber" name="92" href="#92">92</a>              desc.addFamily(datafam);
-<a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>              admin.createTable(desc);
-<a class="jxr_linenumber" name="95" href="#95">95</a>          }
-<a class="jxr_linenumber" name="96" href="#96">96</a>  
-<a class="jxr_linenumber" name="97" href="#97">97</a>          <strong class="jxr_keyword">if</strong> (admin.isTableDisabled(table2)) {
-<a class="jxr_linenumber" name="98" href="#98">98</a>              admin.enableTable(table2);
-<a class="jxr_linenumber" name="99" href="#99">99</a>          }
-<a class="jxr_linenumber" name="100" href="#100">100</a>         admin.close();
-<a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>         TTable tt2 = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, table2);
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>         Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="105" href="#105">105</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="108" href="#108">108</a>         LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
-<a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
-<a class="jxr_linenumber" name="111" href="#111">111</a>         byte[] row2 = Bytes.toBytes(<span class="jxr_string">"test-simple2"</span>);
-<a class="jxr_linenumber" name="112" href="#112">112</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="113" href="#113">113</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
-<a class="jxr_linenumber" name="114" href="#114">114</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="115" href="#115">115</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
-<a class="jxr_linenumber" name="116" href="#116">116</a> 
-<a class="jxr_linenumber" name="117" href="#117">117</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="118" href="#118">118</a>         p.add(fam, col, data1);
-<a class="jxr_linenumber" name="119" href="#119">119</a>         tt.put(t1, p);
-<a class="jxr_linenumber" name="120" href="#120">120</a>         tt2.put(t1, p);
-<a class="jxr_linenumber" name="121" href="#121">121</a> 
-<a class="jxr_linenumber" name="122" href="#122">122</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="123" href="#123">123</a>         p2.add(fam, col, data2);
-<a class="jxr_linenumber" name="124" href="#124">124</a>         tt.put(t2, p2);
-<a class="jxr_linenumber" name="125" href="#125">125</a>         p2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="126" href="#126">126</a>         p2.add(fam, col, data2);
-<a class="jxr_linenumber" name="127" href="#127">127</a>         tt2.put(t2, p2);
-<a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>         tm.commit(t2);
-<a class="jxr_linenumber" name="130" href="#130">130</a> 
-<a class="jxr_linenumber" name="131" href="#131">131</a>         <strong class="jxr_keyword">boolean</strong> aborted = false;
-<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="133" href="#133">133</a>             tm.commit(t1);
-<a class="jxr_linenumber" name="134" href="#134">134</a>             fail(<span class="jxr_string">"Transaction commited successfully"</span>);
-<a class="jxr_linenumber" name="135" href="#135">135</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
-<a class="jxr_linenumber" name="136" href="#136">136</a>             aborted = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="137" href="#137">137</a>         }
-<a class="jxr_linenumber" name="138" href="#138">138</a>         assertTrue(aborted, <span class="jxr_string">"Transaction didn't raise exception"</span>);
-<a class="jxr_linenumber" name="139" href="#139">139</a> 
-<a class="jxr_linenumber" name="140" href="#140">140</a>         ResultScanner rs = tt2.getHTable().getScanner(fam, col);
-<a class="jxr_linenumber" name="141" href="#141">141</a> 
-<a class="jxr_linenumber" name="142" href="#142">142</a>         <strong class="jxr_keyword">int</strong> count = 0;
-<a class="jxr_linenumber" name="143" href="#143">143</a>         Result r;
-<a class="jxr_linenumber" name="144" href="#144">144</a>         <strong class="jxr_keyword">while</strong> ((r = rs.next()) != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="145" href="#145">145</a>             count += r.size();
-<a class="jxr_linenumber" name="146" href="#146">146</a>         }
-<a class="jxr_linenumber" name="147" href="#147">147</a>         assertEquals(count, 1, <span class="jxr_string">"Should have cell"</span>);
-<a class="jxr_linenumber" name="148" href="#148">148</a>     }
-<a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="151" href="#151">151</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestCleanupAfterConflict(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="152" href="#152">152</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="153" href="#153">153</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="154" href="#154">154</a> 
-<a class="jxr_linenumber" name="155" href="#155">155</a>         Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="156" href="#156">156</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
-<a class="jxr_linenumber" name="157" href="#157">157</a> 
-<a class="jxr_linenumber" name="158" href="#158">158</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="159" href="#159">159</a>         LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
-<a class="jxr_linenumber" name="160" href="#160">160</a> 
-<a class="jxr_linenumber" name="161" href="#161">161</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
-<a class="jxr_linenumber" name="162" href="#162">162</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="163" href="#163">163</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
-<a class="jxr_linenumber" name="164" href="#164">164</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="165" href="#165">165</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
-<a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="168" href="#168">168</a>         p.add(fam, col, data1);
-<a class="jxr_linenumber" name="169" href="#169">169</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <strong class="jxr_keyword">try</strong> (Connection conn = ConnectionFactory.createConnection(hbaseConf);
+<a class="jxr_linenumber" name="89" href="#89">89</a>               Admin admin = conn.getAdmin()) {
+<a class="jxr_linenumber" name="90" href="#90">90</a>              TableName htable2 = TableName.valueOf(table2);
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>              <strong class="jxr_keyword">if</strong> (!admin.tableExists(htable2)) {
+<a class="jxr_linenumber" name="93" href="#93">93</a>                  HTableDescriptor desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(table2Name);
+<a class="jxr_linenumber" name="94" href="#94">94</a>                  HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(TEST_FAMILY);
+<a class="jxr_linenumber" name="95" href="#95">95</a>                  datafam.setMaxVersions(Integer.MAX_VALUE);
+<a class="jxr_linenumber" name="96" href="#96">96</a>                  desc.addFamily(datafam);
+<a class="jxr_linenumber" name="97" href="#97">97</a>      
+<a class="jxr_linenumber" name="98" href="#98">98</a>                  admin.createTable(desc);
+<a class="jxr_linenumber" name="99" href="#99">99</a>              }
+<a class="jxr_linenumber" name="100" href="#100">100</a>     
+<a class="jxr_linenumber" name="101" href="#101">101</a>             <strong class="jxr_keyword">if</strong> (admin.isTableDisabled(htable2)) {
+<a class="jxr_linenumber" name="102" href="#102">102</a>                 admin.enableTable(htable2);
+<a class="jxr_linenumber" name="103" href="#103">103</a>             }
+<a class="jxr_linenumber" name="104" href="#104">104</a>         }
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         TTable tt2 = <strong class="jxr_keyword">new</strong> TTable(connection, table2);
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="109" href="#109">109</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="110" href="#110">110</a> 
+<a class="jxr_linenumber" name="111" href="#111">111</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="112" href="#112">112</a>         LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
+<a class="jxr_linenumber" name="115" href="#115">115</a>         byte[] row2 = Bytes.toBytes(<span class="jxr_string">"test-simple2"</span>);
+<a class="jxr_linenumber" name="116" href="#116">116</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="117" href="#117">117</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="118" href="#118">118</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="119" href="#119">119</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="120" href="#120">120</a> 
+<a class="jxr_linenumber" name="121" href="#121">121</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="122" href="#122">122</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="123" href="#123">123</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="124" href="#124">124</a>         tt2.put(t1, p);
+<a class="jxr_linenumber" name="125" href="#125">125</a> 
+<a class="jxr_linenumber" name="126" href="#126">126</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="127" href="#127">127</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="128" href="#128">128</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="129" href="#129">129</a>         p2 = <strong class="jxr_keyword">new</strong> Put(row2);
+<a class="jxr_linenumber" name="130" href="#130">130</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="131" href="#131">131</a>         tt2.put(t2, p2);
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="134" href="#134">134</a> 
+<a class="jxr_linenumber" name="135" href="#135">135</a>         <strong class="jxr_keyword">boolean</strong> aborted = false;
+<a class="jxr_linenumber" name="136" href="#136">136</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="137" href="#137">137</a>             tm.commit(t1);
+<a class="jxr_linenumber" name="138" href="#138">138</a>             fail(<span class="jxr_string">"Transaction commited successfully"</span>);
+<a class="jxr_linenumber" name="139" href="#139">139</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="140" href="#140">140</a>             aborted = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="141" href="#141">141</a>         }
+<a class="jxr_linenumber" name="142" href="#142">142</a>         assertTrue(aborted, <span class="jxr_string">"Transaction didn't raise exception"</span>);
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>         ResultScanner rs = tt2.getHTable().getScanner(fam, col);
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>         <strong class="jxr_keyword">int</strong> count = 0;
+<a class="jxr_linenumber" name="147" href="#147">147</a>         Result r;
+<a class="jxr_linenumber" name="148" href="#148">148</a>         <strong class="jxr_keyword">while</strong> ((r = rs.next()) != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="149" href="#149">149</a>             count += r.size();
+<a class="jxr_linenumber" name="150" href="#150">150</a>         }
+<a class="jxr_linenumber" name="151" href="#151">151</a>         assertEquals(count, 1, <span class="jxr_string">"Should have cell"</span>);
+<a class="jxr_linenumber" name="152" href="#152">152</a>     }
+<a class="jxr_linenumber" name="153" href="#153">153</a> 
+<a class="jxr_linenumber" name="154" href="#154">154</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestCleanupAfterConflict(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="156" href="#156">156</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="157" href="#157">157</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="158" href="#158">158</a> 
+<a class="jxr_linenumber" name="159" href="#159">159</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="160" href="#160">160</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="161" href="#161">161</a> 
+<a class="jxr_linenumber" name="162" href="#162">162</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="163" href="#163">163</a>         LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
+<a class="jxr_linenumber" name="166" href="#166">166</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="167" href="#167">167</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="168" href="#168">168</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="169" href="#169">169</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
 <a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>         Get g = <strong class="jxr_keyword">new</strong> Get(row).setMaxVersions();
-<a class="jxr_linenumber" name="172" href="#172">172</a>         g.addColumn(fam, col);
-<a class="jxr_linenumber" name="173" href="#173">173</a>         Result r = tt.getHTable().get(g);
-<a class="jxr_linenumber" name="174" href="#174">174</a>         assertEquals(r.size(), 1, <span class="jxr_string">"Unexpected size for read."</span>);
-<a class="jxr_linenumber" name="175" href="#175">175</a>         assertTrue(Bytes.equals(data1, r.getValue(fam, col)),
-<a class="jxr_linenumber" name="176" href="#176">176</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="179" href="#179">179</a>         p2.add(fam, col, data2);
-<a class="jxr_linenumber" name="180" href="#180">180</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="171" href="#171">171</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="172" href="#172">172</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="173" href="#173">173</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>         Get g = <strong class="jxr_keyword">new</strong> Get(row).setMaxVersions();
+<a class="jxr_linenumber" name="176" href="#176">176</a>         g.addColumn(fam, col);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         Result r = tt.getHTable().get(g);
+<a class="jxr_linenumber" name="178" href="#178">178</a>         assertEquals(r.size(), 1, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="179" href="#179">179</a>         assertTrue(Bytes.equals(data1, r.getValue(fam, col)),
+<a class="jxr_linenumber" name="180" href="#180">180</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
 <a class="jxr_linenumber" name="181" href="#181">181</a> 
-<a class="jxr_linenumber" name="182" href="#182">182</a>         r = tt.getHTable().get(g);
-<a class="jxr_linenumber" name="183" href="#183">183</a>         assertEquals(r.size(), 2, <span class="jxr_string">"Unexpected size for read."</span>);
-<a class="jxr_linenumber" name="184" href="#184">184</a>         r = tt.get(t2, g);
-<a class="jxr_linenumber" name="185" href="#185">185</a>         assertEquals(r.size(),1, <span class="jxr_string">"Unexpected size for read."</span>);
-<a class="jxr_linenumber" name="186" href="#186">186</a>         assertTrue(Bytes.equals(data2, r.getValue(fam, col)),
-<a class="jxr_linenumber" name="187" href="#187">187</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
-<a class="jxr_linenumber" name="188" href="#188">188</a> 
-<a class="jxr_linenumber" name="189" href="#189">189</a>         tm.commit(t1);
-<a class="jxr_linenumber" name="190" href="#190">190</a> 
-<a class="jxr_linenumber" name="191" href="#191">191</a>         <strong class="jxr_keyword">boolean</strong> aborted = false;
-<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="193" href="#193">193</a>             tm.commit(t2);
-<a class="jxr_linenumber" name="194" href="#194">194</a>             fail(<span class="jxr_string">"Transaction commited successfully"</span>);
-<a class="jxr_linenumber" name="195" href="#195">195</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
-<a class="jxr_linenumber" name="196" href="#196">196</a>             aborted = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="197" href="#197">197</a>         }
-<a class="jxr_linenumber" name="198" href="#198">198</a>         assertTrue(aborted, <span class="jxr_string">"Transaction didn't raise exception"</span>);
-<a class="jxr_linenumber" name="199" href="#199">199</a> 
-<a class="jxr_linenumber" name="200" href="#200">200</a>         r = tt.getHTable().get(g);
-<a class="jxr_linenumber" name="201" href="#201">201</a>         assertEquals(r.size(), 1, <span class="jxr_string">"Unexpected size for read."</span>);
-<a class="jxr_linenumber" name="202" href="#202">202</a>         assertTrue(Bytes.equals(data1, r.getValue(fam, col)),
-<a class="jxr_linenumber" name="203" href="#203">203</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
-<a class="jxr_linenumber" name="204" href="#204">204</a>     }
-<a class="jxr_linenumber" name="205" href="#205">205</a> 
-<a class="jxr_linenumber" name="206" href="#206">206</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCleanupWithDeleteRow(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="208" href="#208">208</a> 
-<a class="jxr_linenumber" name="209" href="#209">209</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="210" href="#210">210</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="211" href="#211">211</a> 
-<a class="jxr_linenumber" name="212" href="#212">212</a>         Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="213" href="#213">213</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
-<a class="jxr_linenumber" name="214" href="#214">214</a> 
-<a class="jxr_linenumber" name="215" href="#215">215</a>         <strong class="jxr_keyword">int</strong> rowcount = 10;
-<a class="jxr_linenumber" name="216" href="#216">216</a>         <strong class="jxr_keyword">int</strong> count = 0;
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="219" href="#219">219</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
-<a class="jxr_linenumber" name="220" href="#220">220</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="221" href="#221">221</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
-<a class="jxr_linenumber" name="222" href="#222">222</a> 
-<a class="jxr_linenumber" name="223" href="#223">223</a>         byte[] modrow = Bytes.toBytes(<span class="jxr_string">"test-del"</span> + 3);
-<a class="jxr_linenumber" name="224" href="#224">224</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; rowcount; i++) {
-<a class="jxr_linenumber" name="225" href="#225">225</a>             byte[] row = Bytes.toBytes(<span class="jxr_string">"test-del"</span> + i);
+<a class="jxr_linenumber" name="182" href="#182">182</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="183" href="#183">183</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="184" href="#184">184</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="185" href="#185">185</a> 
+<a class="jxr_linenumber" name="186" href="#186">186</a>         r = tt.getHTable().get(g);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         assertEquals(r.size(), 2, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="188" href="#188">188</a>         r = tt.get(t2, g);
+<a class="jxr_linenumber" name="189" href="#189">189</a>         assertEquals(r.size(),1, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="190" href="#190">190</a>         assertTrue(Bytes.equals(data2, r.getValue(fam, col)),
+<a class="jxr_linenumber" name="191" href="#191">191</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
+<a class="jxr_linenumber" name="192" href="#192">192</a> 
+<a class="jxr_linenumber" name="193" href="#193">193</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="194" href="#194">194</a> 
+<a class="jxr_linenumber" name="195" href="#195">195</a>         <strong class="jxr_keyword">boolean</strong> aborted = false;
+<a class="jxr_linenumber" name="196" href="#196">196</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="197" href="#197">197</a>             tm.commit(t2);
+<a class="jxr_linenumber" name="198" href="#198">198</a>             fail(<span class="jxr_string">"Transaction commited successfully"</span>);
+<a class="jxr_linenumber" name="199" href="#199">199</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="200" href="#200">200</a>             aborted = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="201" href="#201">201</a>         }
+<a class="jxr_linenumber" name="202" href="#202">202</a>         assertTrue(aborted, <span class="jxr_string">"Transaction didn't raise exception"</span>);
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>         r = tt.getHTable().get(g);
+<a class="jxr_linenumber" name="205" href="#205">205</a>         assertEquals(r.size(), 1, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="206" href="#206">206</a>         assertTrue(Bytes.equals(data1, r.getValue(fam, col)),
+<a class="jxr_linenumber" name="207" href="#207">207</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
+<a class="jxr_linenumber" name="208" href="#208">208</a>     }
+<a class="jxr_linenumber" name="209" href="#209">209</a> 
+<a class="jxr_linenumber" name="210" href="#210">210</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="211" href="#211">211</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCleanupWithDeleteRow(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="212" href="#212">212</a> 
+<a class="jxr_linenumber" name="213" href="#213">213</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="214" href="#214">214</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="217" href="#217">217</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">int</strong> rowcount = 10;
+<a class="jxr_linenumber" name="220" href="#220">220</a>         <strong class="jxr_keyword">int</strong> count = 0;
+<a class="jxr_linenumber" name="221" href="#221">221</a> 
+<a class="jxr_linenumber" name="222" href="#222">222</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="223" href="#223">223</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="224" href="#224">224</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="225" href="#225">225</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
 <a class="jxr_linenumber" name="226" href="#226">226</a> 
-<a class="jxr_linenumber" name="227" href="#227">227</a>             Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="228" href="#228">228</a>             p.add(fam, col, data1);
-<a class="jxr_linenumber" name="229" href="#229">229</a>             tt.put(t1, p);
-<a class="jxr_linenumber" name="230" href="#230">230</a>         }
-<a class="jxr_linenumber" name="231" href="#231">231</a>         tm.commit(t1);
-<a class="jxr_linenumber" name="232" href="#232">232</a> 
-<a class="jxr_linenumber" name="233" href="#233">233</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="234" href="#234">234</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t2);
-<a class="jxr_linenumber" name="235" href="#235">235</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
-<a class="jxr_linenumber" name="236" href="#236">236</a>         tt.delete(t2, d);
-<a class="jxr_linenumber" name="237" href="#237">237</a> 
-<a class="jxr_linenumber" name="238" href="#238">238</a>         ResultScanner rs = tt.getScanner(t2, <strong class="jxr_keyword">new</strong> Scan());
-<a class="jxr_linenumber" name="239" href="#239">239</a>         Result r = rs.next();
-<a class="jxr_linenumber" name="240" href="#240">240</a>         count = 0;
-<a class="jxr_linenumber" name="241" href="#241">241</a>         <strong class="jxr_keyword">while</strong> (r != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="242" href="#242">242</a>             count++;
-<a class="jxr_linenumber" name="243" href="#243">243</a>             LOG.trace(<span class="jxr_string">"row: "</span> + Bytes.toString(r.getRow()) + <span class="jxr_string">" count: "</span> + count);
-<a class="jxr_linenumber" name="244" href="#244">244</a>             r = rs.next();
-<a class="jxr_linenumber" name="245" href="#245">245</a>         }
-<a class="jxr_linenumber" name="246" href="#246">246</a>         assertEquals(count, rowcount - 1, <span class="jxr_string">"Wrong count"</span>);
-<a class="jxr_linenumber" name="247" href="#247">247</a> 
-<a class="jxr_linenumber" name="248" href="#248">248</a>         Transaction t3 = tm.begin();
-<a class="jxr_linenumber" name="249" href="#249">249</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t3);
-<a class="jxr_linenumber" name="250" href="#250">250</a>         Put p = <strong class="jxr_keyword">new</strong> Put(modrow);
-<a class="jxr_linenumber" name="251" href="#251">251</a>         p.add(fam, col, data2);
-<a class="jxr_linenumber" name="252" href="#252">252</a>         tt.put(t3, p);
-<a class="jxr_linenumber" name="253" href="#253">253</a> 
-<a class="jxr_linenumber" name="254" href="#254">254</a>         tm.commit(t3);
-<a class="jxr_linenumber" name="255" href="#255">255</a> 
-<a class="jxr_linenumber" name="256" href="#256">256</a>         <strong class="jxr_keyword">boolean</strong> aborted = false;
-<a class="jxr_linenumber" name="257" href="#257">257</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="258" href="#258">258</a>             tm.commit(t2);
-<a class="jxr_linenumber" name="259" href="#259">259</a>             fail(<span class="jxr_string">"Didn't abort"</span>);
-<a class="jxr_linenumber" name="260" href="#260">260</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
-<a class="jxr_linenumber" name="261" href="#261">261</a>             aborted = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="262" href="#262">262</a>         }
-<a class="jxr_linenumber" name="263" href="#263">263</a>         assertTrue(aborted, <span class="jxr_string">"Didn't raise exception"</span>);
-<a class="jxr_linenumber" name="264" href="#264">264</a> 
-<a class="jxr_linenumber" name="265" href="#265">265</a>         Transaction tscan = tm.begin();
-<a class="jxr_linenumber" name="266" href="#266">266</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
-<a class="jxr_linenumber" name="267" href="#267">267</a>         r = rs.next();
-<a class="jxr_linenumber" name="268" href="#268">268</a>         count = 0;
-<a class="jxr_linenumber" name="269" href="#269">269</a>         <strong class="jxr_keyword">while</strong> (r != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="270" href="#270">270</a>             count++;
-<a class="jxr_linenumber" name="271" href="#271">271</a>             r = rs.next();
-<a class="jxr_linenumber" name="272" href="#272">272</a>         }
-<a class="jxr_linenumber" name="273" href="#273">273</a>         assertEquals(count, rowcount, <span class="jxr_string">"Wrong count"</span>);
-<a class="jxr_linenumber" name="274" href="#274">274</a> 
-<a class="jxr_linenumber" name="275" href="#275">275</a>     }
-<a class="jxr_linenumber" name="276" href="#276">276</a> 
-<a class="jxr_linenumber" name="277" href="#277">277</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="278" href="#278">278</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMultipleCellChangesOnSameRow(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="279" href="#279">279</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="280" href="#280">280</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="281" href="#281">281</a> 
-<a class="jxr_linenumber" name="282" href="#282">282</a>         Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="283" href="#283">283</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="284" href="#284">284</a>         LOG.info(<span class="jxr_string">"Transactions created "</span> + t1 + <span class="jxr_string">" "</span> + t2);
+<a class="jxr_linenumber" name="227" href="#227">227</a>         byte[] modrow = Bytes.toBytes(<span class="jxr_string">"test-del"</span> + 3);
+<a class="jxr_linenumber" name="228" href="#228">228</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; rowcount; i++) {
+<a class="jxr_linenumber" name="229" href="#229">229</a>             byte[] row = Bytes.toBytes(<span class="jxr_string">"test-del"</span> + i);
+<a class="jxr_linenumber" name="230" href="#230">230</a> 
+<a class="jxr_linenumber" name="231" href="#231">231</a>             Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="232" href="#232">232</a>             p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="233" href="#233">233</a>             tt.put(t1, p);
+<a class="jxr_linenumber" name="234" href="#234">234</a>         }
+<a class="jxr_linenumber" name="235" href="#235">235</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="236" href="#236">236</a> 
+<a class="jxr_linenumber" name="237" href="#237">237</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="238" href="#238">238</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t2);
+<a class="jxr_linenumber" name="239" href="#239">239</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="240" href="#240">240</a>         tt.delete(t2, d);
+<a class="jxr_linenumber" name="241" href="#241">241</a> 
+<a class="jxr_linenumber" name="242" href="#242">242</a>         ResultScanner rs = tt.getScanner(t2, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="243" href="#243">243</a>         Result r = rs.next();
+<a class="jxr_linenumber" name="244" href="#244">244</a>         count = 0;
+<a class="jxr_linenumber" name="245" href="#245">245</a>         <strong class="jxr_keyword">while</strong> (r != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="246" href="#246">246</a>             count++;
+<a class="jxr_linenumber" name="247" href="#247">247</a>             LOG.trace(<span class="jxr_string">"row: "</span> + Bytes.toString(r.getRow()) + <span class="jxr_string">" count: "</span> + count);
+<a class="jxr_linenumber" name="248" href="#248">248</a>             r = rs.next();
+<a class="jxr_linenumber" name="249" href="#249">249</a>         }
+<a class="jxr_linenumber" name="250" href="#250">250</a>         assertEquals(count, rowcount - 1, <span class="jxr_string">"Wrong count"</span>);
+<a class="jxr_linenumber" name="251" href="#251">251</a> 
+<a class="jxr_linenumber" name="252" href="#252">252</a>         Transaction t3 = tm.begin();
+<a class="jxr_linenumber" name="253" href="#253">253</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t3);
+<a class="jxr_linenumber" name="254" href="#254">254</a>         Put p = <strong class="jxr_keyword">new</strong> Put(modrow);
+<a class="jxr_linenumber" name="255" href="#255">255</a>         p.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="256" href="#256">256</a>         tt.put(t3, p);
+<a class="jxr_linenumber" name="257" href="#257">257</a> 
+<a class="jxr_linenumber" name="258" href="#258">258</a>         tm.commit(t3);
+<a class="jxr_linenumber" name="259" href="#259">259</a> 
+<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">boolean</strong> aborted = false;
+<a class="jxr_linenumber" name="261" href="#261">261</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="262" href="#262">262</a>             tm.commit(t2);
+<a class="jxr_linenumber" name="263" href="#263">263</a>             fail(<span class="jxr_string">"Didn't abort"</span>);
+<a class="jxr_linenumber" name="264" href="#264">264</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="265" href="#265">265</a>             aborted = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="266" href="#266">266</a>         }
+<a class="jxr_linenumber" name="267" href="#267">267</a>         assertTrue(aborted, <span class="jxr_string">"Didn't raise exception"</span>);
+<a class="jxr_linenumber" name="268" href="#268">268</a> 
+<a class="jxr_linenumber" name="269" href="#269">269</a>         Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="270" href="#270">270</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="271" href="#271">271</a>         r = rs.next();
+<a class="jxr_linenumber" name="272" href="#272">272</a>         count = 0;
+<a class="jxr_linenumber" name="273" href="#273">273</a>         <strong class="jxr_keyword">while</strong> (r != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="274" href="#274">274</a>             count++;
+<a class="jxr_linenumber" name="275" href="#275">275</a>             r = rs.next();
+<a class="jxr_linenumber" name="276" href="#276">276</a>         }
+<a class="jxr_linenumber" name="277" href="#277">277</a>         assertEquals(count, rowcount, <span class="jxr_string">"Wrong count"</span>);
+<a class="jxr_linenumber" name="278" href="#278">278</a> 
+<a class="jxr_linenumber" name="279" href="#279">279</a>     }
+<a class="jxr_linenumber" name="280" href="#280">280</a> 
+<a class="jxr_linenumber" name="281" href="#281">281</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="282" href="#282">282</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMultipleCellChangesOnSameRow(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="283" href="#283">283</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="284" href="#284">284</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="285" href="#285">285</a> 
-<a class="jxr_linenumber" name="286" href="#286">286</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"row"</span>);
-<a class="jxr_linenumber" name="287" href="#287">287</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="288" href="#288">288</a>         byte[] col1 = Bytes.toBytes(<span class="jxr_string">"testdata1"</span>);
-<a class="jxr_linenumber" name="289" href="#289">289</a>         byte[] col2 = Bytes.toBytes(<span class="jxr_string">"testdata2"</span>);
-<a class="jxr_linenumber" name="290" href="#290">290</a>         byte[] data = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="291" href="#291">291</a> 
-<a class="jxr_linenumber" name="292" href="#292">292</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="293" href="#293">293</a>         p2.add(fam, col1, data);
-<a class="jxr_linenumber" name="294" href="#294">294</a>         tt.put(t2, p2);
-<a class="jxr_linenumber" name="295" href="#295">295</a>         tm.commit(t2);
-<a class="jxr_linenumber" name="296" href="#296">296</a> 
-<a class="jxr_linenumber" name="297" href="#297">297</a>         Put p1 = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="298" href="#298">298</a>         p1.add(fam, col2, data);
-<a class="jxr_linenumber" name="299" href="#299">299</a>         tt.put(t1, p1);
-<a class="jxr_linenumber" name="300" href="#300">300</a>         tm.commit(t1);
-<a class="jxr_linenumber" name="301" href="#301">301</a>     }
-<a class="jxr_linenumber" name="302" href="#302">302</a> 
-<a class="jxr_linenumber" name="303" href="#303">303</a> }
+<a class="jxr_linenumber" name="286" href="#286">286</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="287" href="#287">287</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="288" href="#288">288</a>         LOG.info(<span class="jxr_string">"Transactions created "</span> + t1 + <span class="jxr_string">" "</span> + t2);
+<a class="jxr_linenumber" name="289" href="#289">289</a> 
+<a class="jxr_linenumber" name="290" href="#290">290</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"row"</span>);
+<a class="jxr_linenumber" name="291" href="#291">291</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="292" href="#292">292</a>         byte[] col1 = Bytes.toBytes(<span class="jxr_string">"testdata1"</span>);
+<a class="jxr_linenumber" name="293" href="#293">293</a>         byte[] col2 = Bytes.toBytes(<span class="jxr_string">"testdata2"</span>);
+<a class="jxr_linenumber" name="294" href="#294">294</a>         byte[] data = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="295" href="#295">295</a> 
+<a class="jxr_linenumber" name="296" href="#296">296</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="297" href="#297">297</a>         p2.addColumn(fam, col1, data);
+<a class="jxr_linenumber" name="298" href="#298">298</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="299" href="#299">299</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="300" href="#300">300</a> 
+<a class="jxr_linenumber" name="301" href="#301">301</a>         Put p1 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="302" href="#302">302</a>         p1.addColumn(fam, col2, data);
+<a class="jxr_linenumber" name="303" href="#303">303</a>         tt.put(t1, p1);
+<a class="jxr_linenumber" name="304" href="#304">304</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="305" href="#305">305</a>     }
+<a class="jxr_linenumber" name="306" href="#306">306</a> 
+<a class="jxr_linenumber" name="307" href="#307">307</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="308" href="#308">308</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestWriteWriteConflictWithAdditionalConflictFreeWrites(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="309" href="#309">309</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="310" href="#310">310</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="311" href="#311">311</a> 
+<a class="jxr_linenumber" name="312" href="#312">312</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="313" href="#313">313</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="314" href="#314">314</a> 
+<a class="jxr_linenumber" name="315" href="#315">315</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="316" href="#316">316</a>         LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
+<a class="jxr_linenumber" name="317" href="#317">317</a> 
+<a class="jxr_linenumber" name="318" href="#318">318</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
+<a class="jxr_linenumber" name="319" href="#319">319</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="320" href="#320">320</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="321" href="#321">321</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="322" href="#322">322</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="323" href="#323">323</a> 
+<a class="jxr_linenumber" name="324" href="#324">324</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="325" href="#325">325</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="326" href="#326">326</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="327" href="#327">327</a> 
+<a class="jxr_linenumber" name="328" href="#328">328</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="329" href="#329">329</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="330" href="#330">330</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="331" href="#331">331</a> 
+<a class="jxr_linenumber" name="332" href="#332">332</a>         row = Bytes.toBytes(<span class="jxr_string">"test-simple-cf"</span>);
+<a class="jxr_linenumber" name="333" href="#333">333</a>         p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="334" href="#334">334</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="335" href="#335">335</a>         tt.markPutAsConflictFreeMutation(p);
+<a class="jxr_linenumber" name="336" href="#336">336</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="337" href="#337">337</a> 
+<a class="jxr_linenumber" name="338" href="#338">338</a>         p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="339" href="#339">339</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="340" href="#340">340</a>         tt.markPutAsConflictFreeMutation(p2);
+<a class="jxr_linenumber" name="341" href="#341">341</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="342" href="#342">342</a> 
+<a class="jxr_linenumber" name="343" href="#343">343</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="344" href="#344">344</a> 
+<a class="jxr_linenumber" name="345" href="#345">345</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="346" href="#346">346</a>             tm.commit(t1);
+<a class="jxr_linenumber" name="347" href="#347">347</a>             fail(<span class="jxr_string">"Transaction should not commit successfully"</span>);
+<a class="jxr_linenumber" name="348" href="#348">348</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="349" href="#349">349</a>         }
+<a class="jxr_linenumber" name="350" href="#350">350</a>     }
+<a class="jxr_linenumber" name="351" href="#351">351</a> 
+<a class="jxr_linenumber" name="352" href="#352">352</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="353" href="#353">353</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestWriteWriteConflictFreeWrites(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="354" href="#354">354</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="355" href="#355">355</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="356" href="#356">356</a> 
+<a class="jxr_linenumber" name="357" href="#357">357</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="358" href="#358">358</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="359" href="#359">359</a> 
+<a class="jxr_linenumber" name="360" href="#360">360</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="361" href="#361">361</a>         LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
+<a class="jxr_linenumber" name="362" href="#362">362</a> 
+<a class="jxr_linenumber" name="363" href="#363">363</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
+<a class="jxr_linenumber" name="364" href="#364">364</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="365" href="#365">365</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="366" href="#366">366</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="367" href="#367">367</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="368" href="#368">368</a> 
+<a class="jxr_linenumber" name="369" href="#369">369</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="370" href="#370">370</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="371" href="#371">371</a>         tt.markPutAsConflictFreeMutation(p);
+<a class="jxr_linenumber" name="372" href="#372">372</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="373" href="#373">373</a> 
+<a class="jxr_linenumber" name="374" href="#374">374</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="375" href="#375">375</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="376" href="#376">376</a>         tt.markPutAsConflictFreeMutation(p2);
+<a class="jxr_linenumber" name="377" href="#377">377</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="378" href="#378">378</a> 
+<a class="jxr_linenumber" name="379" href="#379">379</a>         row = Bytes.toBytes(<span class="jxr_string">"test-simple-cf"</span>);
+<a class="jxr_linenumber" name="380" href="#380">380</a>         p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="381" href="#381">381</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="382" href="#382">382</a>         tt.markPutAsConflictFreeMutation(p);
+<a class="jxr_linenumber" name="383" href="#383">383</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="384" href="#384">384</a> 
+<a class="jxr_linenumber" name="385" href="#385">385</a>         p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="386" href="#386">386</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="387" href="#387">387</a>         tt.markPutAsConflictFreeMutation(p2);
+<a class="jxr_linenumber" name="388" href="#388">388</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="389" href="#389">389</a> 
+<a class="jxr_linenumber" name="390" href="#390">390</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="391" href="#391">391</a> 
+<a class="jxr_linenumber" name="392" href="#392">392</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="393" href="#393">393</a>             tm.commit(t1);
+<a class="jxr_linenumber" name="394" href="#394">394</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="395" href="#395">395</a>             fail(<span class="jxr_string">"Transaction should not commit successfully"</span>);
+<a class="jxr_linenumber" name="396" href="#396">396</a>         }
+<a class="jxr_linenumber" name="397" href="#397">397</a>     }
+<a class="jxr_linenumber" name="398" href="#398">398</a> 
+<a class="jxr_linenumber" name="399" href="#399">399</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="400" href="#400">400</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestWriteWriteConflictFreeWritesWithOtherWrites(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="401" href="#401">401</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="402" href="#402">402</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="403" href="#403">403</a> 
+<a class="jxr_linenumber" name="404" href="#404">404</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="405" href="#405">405</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="406" href="#406">406</a> 
+<a class="jxr_linenumber" name="407" href="#407">407</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="408" href="#408">408</a>         LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
+<a class="jxr_linenumber" name="409" href="#409">409</a> 
+<a class="jxr_linenumber" name="410" href="#410">410</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
+<a class="jxr_linenumber" name="411" href="#411">411</a>         byte[] row1 = Bytes.toBytes(<span class="jxr_string">"test-simple-1"</span>);
+<a class="jxr_linenumber" name="412" href="#412">412</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="413" href="#413">413</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="414" href="#414">414</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="415" href="#415">415</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="416" href="#416">416</a> 
+<a class="jxr_linenumber" name="417" href="#417">417</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="418" href="#418">418</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="419" href="#419">419</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="420" href="#420">420</a> 
+<a class="jxr_linenumber" name="421" href="#421">421</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="422" href="#422">422</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="423" href="#423">423</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="424" href="#424">424</a> 
+<a class="jxr_linenumber" name="425" href="#425">425</a>         row = Bytes.toBytes(<span class="jxr_string">"test-simple-cf"</span>);
+<a class="jxr_linenumber" name="426" href="#426">426</a>         p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="427" href="#427">427</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="428" href="#428">428</a>         tt.markPutAsConflictFreeMutation(p);
+<a class="jxr_linenumber" name="429" href="#429">429</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="430" href="#430">430</a> 
+<a class="jxr_linenumber" name="431" href="#431">431</a>         p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="432" href="#432">432</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="433" href="#433">433</a>         tt.markPutAsConflictFreeMutation(p2);
+<a class="jxr_linenumber" name="434" href="#434">434</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="435" href="#435">435</a> 
+<a class="jxr_linenumber" name="436" href="#436">436</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="437" href="#437">437</a> 
+<a class="jxr_linenumber" name="438" href="#438">438</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="439" href="#439">439</a>             tm.commit(t1);
+<a class="jxr_linenumber" name="440" href="#440">440</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="441" href="#441">441</a>             fail(<span class="jxr_string">"Transaction should not commit successfully"</span>);
+<a class="jxr_linenumber" name="442" href="#442">442</a>         }
+<a class="jxr_linenumber" name="443" href="#443">443</a>     }
+<a class="jxr_linenumber" name="444" href="#444">444</a> 
+<a class="jxr_linenumber" name="445" href="#445">445</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="446" href="#446">446</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestCleanupConflictFreeWritesAfterConflict(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="447" href="#447">447</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="448" href="#448">448</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="449" href="#449">449</a> 
+<a class="jxr_linenumber" name="450" href="#450">450</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="451" href="#451">451</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="452" href="#452">452</a> 
+<a class="jxr_linenumber" name="453" href="#453">453</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="454" href="#454">454</a>         LOG.info(<span class="jxr_string">"Transaction created"</span> + t2);
+<a class="jxr_linenumber" name="455" href="#455">455</a> 
+<a class="jxr_linenumber" name="456" href="#456">456</a>         byte[] row = Bytes.toBytes(<span class="jxr_string">"test-simple"</span>);
+<a class="jxr_linenumber" name="457" href="#457">457</a>         byte[] row1 = Bytes.toBytes(<span class="jxr_string">"test-simple-1"</span>);
+<a class="jxr_linenumber" name="458" href="#458">458</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="459" href="#459">459</a>         byte[] col = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="460" href="#460">460</a>         byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="461" href="#461">461</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="462" href="#462">462</a> 
+<a class="jxr_linenumber" name="463" href="#463">463</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="464" href="#464">464</a>         p.addColumn(fam, col, data1);
+<a class="jxr_linenumber" name="465" href="#465">465</a>         tt.put(t1, p);
+<a class="jxr_linenumber" name="466" href="#466">466</a> 
+<a class="jxr_linenumber" name="467" href="#467">467</a>         Get g = <strong class="jxr_keyword">new</strong> Get(row).setMaxVersions();
+<a class="jxr_linenumber" name="468" href="#468">468</a>         g.addColumn(fam, col);
+<a class="jxr_linenumber" name="469" href="#469">469</a>         Result r = tt.getHTable().get(g);
+<a class="jxr_linenumber" name="470" href="#470">470</a>         assertEquals(r.size(), 1, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="471" href="#471">471</a>         assertTrue(Bytes.equals(data1, r.getValue(fam, col)),
+<a class="jxr_linenumber" name="472" href="#472">472</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
+<a class="jxr_linenumber" name="473" href="#473">473</a> 
+<a class="jxr_linenumber" name="474" href="#474">474</a>         Put p2 = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="475" href="#475">475</a>         p2.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="476" href="#476">476</a>         tt.put(t2, p2);
+<a class="jxr_linenumber" name="477" href="#477">477</a> 
+<a class="jxr_linenumber" name="478" href="#478">478</a>         Put p3 = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="479" href="#479">479</a>         p3.addColumn(fam, col, data2);
+<a class="jxr_linenumber" name="480" href="#480">480</a>         tt.markPutAsConflictFreeMutation(p3);
+<a class="jxr_linenumber" name="481" href="#481">481</a>         tt.put(t2, p3);
+<a class="jxr_linenumber" name="482" href="#482">482</a> 
+<a class="jxr_linenumber" name="483" href="#483">483</a>         r = tt.getHTable().get(g);
+<a class="jxr_linenumber" name="484" href="#484">484</a>         assertEquals(r.size(), 2, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="485" href="#485">485</a>         r = tt.get(t2, g);
+<a class="jxr_linenumber" name="486" href="#486">486</a>         assertEquals(r.size(),1, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="487" href="#487">487</a>         assertTrue(Bytes.equals(data2, r.getValue(fam, col)),
+<a class="jxr_linenumber" name="488" href="#488">488</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
+<a class="jxr_linenumber" name="489" href="#489">489</a> 
+<a class="jxr_linenumber" name="490" href="#490">490</a>         Get g1 = <strong class="jxr_keyword">new</strong> Get(row1).setMaxVersions();
+<a class="jxr_linenumber" name="491" href="#491">491</a>         g1.addColumn(fam, col);
+<a class="jxr_linenumber" name="492" href="#492">492</a>         r = tt.getHTable().get(g1);
+<a class="jxr_linenumber" name="493" href="#493">493</a>         assertEquals(r.size(), 1, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="494" href="#494">494</a> 
+<a class="jxr_linenumber" name="495" href="#495">495</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="496" href="#496">496</a> 
+<a class="jxr_linenumber" name="497" href="#497">497</a>         <strong class="jxr_keyword">boolean</strong> aborted = false;
+<a class="jxr_linenumber" name="498" href="#498">498</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="499" href="#499">499</a>             tm.commit(t2);
+<a class="jxr_linenumber" name="500" href="#500">500</a>             fail(<span class="jxr_string">"Transaction commited successfully"</span>);
+<a class="jxr_linenumber" name="501" href="#501">501</a>         } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="502" href="#502">502</a>             aborted = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="503" href="#503">503</a>         }
+<a class="jxr_linenumber" name="504" href="#504">504</a>         assertTrue(aborted, <span class="jxr_string">"Transaction didn't raise exception"</span>);
+<a class="jxr_linenumber" name="505" href="#505">505</a> 
+<a class="jxr_linenumber" name="506" href="#506">506</a>         r = tt.getHTable().get(g);
+<a class="jxr_linenumber" name="507" href="#507">507</a>         assertEquals(r.size(), 1, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="508" href="#508">508</a>         assertTrue(Bytes.equals(data1, r.getValue(fam, col)),
+<a class="jxr_linenumber" name="509" href="#509">509</a>                    <span class="jxr_string">"Unexpected value for read: "</span> + Bytes.toString(r.getValue(fam, col)));
+<a class="jxr_linenumber" name="510" href="#510">510</a>         r = tt.getHTable().get(g1);
+<a class="jxr_linenumber" name="511" href="#511">511</a>         assertEquals(r.size(), 0, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="512" href="#512">512</a>     }
+<a class="jxr_linenumber" name="513" href="#513">513</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[46/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/committable/hbase/TestHBaseCommitTable.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/committable/hbase/TestHBaseCommitTable.html b/xref-test/org/apache/omid/committable/hbase/TestHBaseCommitTable.html
index b17d32c..8b2c6e2 100644
--- a/xref-test/org/apache/omid/committable/hbase/TestHBaseCommitTable.html
+++ b/xref-test/org/apache/omid/committable/hbase/TestHBaseCommitTable.html
@@ -27,285 +27,296 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.committable.hbase;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseTestingUtility;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.MiniHBaseCluster;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.coprocessor.AggregationClient;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.Client;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.Writer;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTable.HBaseClient;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.testng.Assert;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterClass;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Future;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Future;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseTestingUtility;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.MiniHBaseCluster;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Admin;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.Client;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.Writer;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTable.HBaseClient;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.testng.Assert;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterClass;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="53" href="#53">53</a>  
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/TestHBaseCommitTable.html">TestHBaseCommitTable</a> {
-<a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestHBaseCommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="57" href="#57">57</a>  
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_TABLE = <span class="jxr_string">"TEST"</span>;
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> TableName TABLE_NAME = TableName.valueOf(TEST_TABLE);
-<a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> HBaseTestingUtility testutil;
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> MiniHBaseCluster hbasecluster;
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> Configuration hbaseConf;
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> AggregationClient aggregationClient;
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> byte[] commitTableFamily;
-<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> byte[] lowWatermarkFamily;
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>      @BeforeClass
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUpClass() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <em class="jxr_comment">// HBase setup</em>
-<a class="jxr_linenumber" name="73" href="#73">73</a>          hbaseConf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="74" href="#74">74</a>          DefaultHBaseCommitTableStorageModule module = <strong class="jxr_keyword">new</strong> DefaultHBaseCommitTableStorageModule();
-<a class="jxr_linenumber" name="75" href="#75">75</a>          commitTableFamily = module.getFamilyName().getBytes();
-<a class="jxr_linenumber" name="76" href="#76">76</a>          lowWatermarkFamily = module.getLowWatermarkFamily().getBytes();
-<a class="jxr_linenumber" name="77" href="#77">77</a>          LOG.info(<span class="jxr_string">"Create hbase"</span>);
-<a class="jxr_linenumber" name="78" href="#78">78</a>          testutil = <strong class="jxr_keyword">new</strong> HBaseTestingUtility(hbaseConf);
-<a class="jxr_linenumber" name="79" href="#79">79</a>          hbasecluster = testutil.startMiniCluster(1);
-<a class="jxr_linenumber" name="80" href="#80">80</a>          aggregationClient = <strong class="jxr_keyword">new</strong> AggregationClient(hbaseConf);
-<a class="jxr_linenumber" name="81" href="#81">81</a>  
-<a class="jxr_linenumber" name="82" href="#82">82</a>      }
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>      @AfterClass
-<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDownClass() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">if</strong> (hbasecluster != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="87" href="#87">87</a>              testutil.shutdownMiniCluster();
-<a class="jxr_linenumber" name="88" href="#88">88</a>          }
-<a class="jxr_linenumber" name="89" href="#89">89</a>      }
-<a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>      @BeforeMethod
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="93" href="#93">93</a>          HBaseAdmin admin = testutil.getHBaseAdmin();
-<a class="jxr_linenumber" name="94" href="#94">94</a>  
-<a class="jxr_linenumber" name="95" href="#95">95</a>          <strong class="jxr_keyword">if</strong> (!admin.tableExists(TEST_TABLE)) {
-<a class="jxr_linenumber" name="96" href="#96">96</a>              HTableDescriptor desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(TABLE_NAME);
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/TestHBaseCommitTable.html">TestHBaseCommitTable</a> {
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestHBaseCommitTable.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="60" href="#60">60</a>  
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_TABLE = <span class="jxr_string">"TEST"</span>;
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> TableName TABLE_NAME = TableName.valueOf(TEST_TABLE);
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> HBaseTestingUtility testutil;
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> MiniHBaseCluster hbasecluster;
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> Configuration hbaseConf;
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> Connection connection;
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> byte[] commitTableFamily;
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> byte[] lowWatermarkFamily;
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>      @BeforeClass
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUpClass() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="75" href="#75">75</a>          <em class="jxr_comment">// HBase setup</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>          hbaseConf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="77" href="#77">77</a>          hbaseConf.setBoolean(<span class="jxr_string">"hbase.localcluster.assign.random.ports"</span>,<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="78" href="#78">78</a>          DefaultHBaseCommitTableStorageModule module = <strong class="jxr_keyword">new</strong> DefaultHBaseCommitTableStorageModule();
+<a class="jxr_linenumber" name="79" href="#79">79</a>          commitTableFamily = module.getFamilyName().getBytes();
+<a class="jxr_linenumber" name="80" href="#80">80</a>          lowWatermarkFamily = module.getLowWatermarkFamily().getBytes();
+<a class="jxr_linenumber" name="81" href="#81">81</a>          LOG.info(<span class="jxr_string">"Create hbase"</span>);
+<a class="jxr_linenumber" name="82" href="#82">82</a>          testutil = <strong class="jxr_keyword">new</strong> HBaseTestingUtility(hbaseConf);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          hbasecluster = testutil.startMiniCluster(1);
+<a class="jxr_linenumber" name="84" href="#84">84</a>          connection = ConnectionFactory.createConnection(hbaseConf);
+<a class="jxr_linenumber" name="85" href="#85">85</a>      }
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>      @AfterClass
+<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDownClass() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="89" href="#89">89</a>          <strong class="jxr_keyword">if</strong> (hbasecluster != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="90" href="#90">90</a>              testutil.shutdownMiniCluster();
+<a class="jxr_linenumber" name="91" href="#91">91</a>          }
+<a class="jxr_linenumber" name="92" href="#92">92</a>      }
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>      @BeforeMethod
+<a class="jxr_linenumber" name="95" href="#95">95</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="96" href="#96">96</a>          Admin admin = testutil.getHBaseAdmin();
 <a class="jxr_linenumber" name="97" href="#97">97</a>  
-<a class="jxr_linenumber" name="98" href="#98">98</a>              HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(commitTableFamily);
-<a class="jxr_linenumber" name="99" href="#99">99</a>              datafam.setMaxVersions(Integer.MAX_VALUE);
-<a class="jxr_linenumber" name="100" href="#100">100</a>             desc.addFamily(datafam);
-<a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>             HColumnDescriptor lowWatermarkFam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(lowWatermarkFamily);
-<a class="jxr_linenumber" name="103" href="#103">103</a>             lowWatermarkFam.setMaxVersions(Integer.MAX_VALUE);
-<a class="jxr_linenumber" name="104" href="#104">104</a>             desc.addFamily(lowWatermarkFam);
-<a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>             desc.addCoprocessor(<span class="jxr_string">"org.apache.hadoop.hbase.coprocessor.AggregateImplementation"</span>);
-<a class="jxr_linenumber" name="107" href="#107">107</a>             admin.createTable(desc);
-<a class="jxr_linenumber" name="108" href="#108">108</a>         }
-<a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">if</strong> (admin.isTableDisabled(TEST_TABLE)) {
-<a class="jxr_linenumber" name="111" href="#111">111</a>             admin.enableTable(TEST_TABLE);
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <strong class="jxr_keyword">if</strong> (!admin.tableExists(TableName.valueOf(TEST_TABLE))) {
+<a class="jxr_linenumber" name="99" href="#99">99</a>              HTableDescriptor desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(TABLE_NAME);
+<a class="jxr_linenumber" name="100" href="#100">100</a> 
+<a class="jxr_linenumber" name="101" href="#101">101</a>             HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(commitTableFamily);
+<a class="jxr_linenumber" name="102" href="#102">102</a>             datafam.setMaxVersions(Integer.MAX_VALUE);
+<a class="jxr_linenumber" name="103" href="#103">103</a>             desc.addFamily(datafam);
+<a class="jxr_linenumber" name="104" href="#104">104</a> 
+<a class="jxr_linenumber" name="105" href="#105">105</a>             HColumnDescriptor lowWatermarkFam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(lowWatermarkFamily);
+<a class="jxr_linenumber" name="106" href="#106">106</a>             lowWatermarkFam.setMaxVersions(Integer.MAX_VALUE);
+<a class="jxr_linenumber" name="107" href="#107">107</a>             desc.addFamily(lowWatermarkFam);
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>             <em class="jxr_comment">// Move to HBaseSims for 2.0 support</em>
+<a class="jxr_linenumber" name="110" href="#110">110</a>             <em class="jxr_comment">// For 2.0, use TableDescriptorBuilder to build TableDescriptor</em>
+<a class="jxr_linenumber" name="111" href="#111">111</a>             admin.createTable(desc);
 <a class="jxr_linenumber" name="112" href="#112">112</a>         }
-<a class="jxr_linenumber" name="113" href="#113">113</a>         HTableDescriptor[] tables = admin.listTables();
-<a class="jxr_linenumber" name="114" href="#114">114</a>         <strong class="jxr_keyword">for</strong> (HTableDescriptor t : tables) {
-<a class="jxr_linenumber" name="115" href="#115">115</a>             LOG.info(t.getNameAsString());
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>         <strong class="jxr_keyword">if</strong> (admin.isTableDisabled(TableName.valueOf(TEST_TABLE))) {
+<a class="jxr_linenumber" name="115" href="#115">115</a>             admin.enableTable(TableName.valueOf(TEST_TABLE));
 <a class="jxr_linenumber" name="116" href="#116">116</a>         }
-<a class="jxr_linenumber" name="117" href="#117">117</a>     }
-<a class="jxr_linenumber" name="118" href="#118">118</a> 
-<a class="jxr_linenumber" name="119" href="#119">119</a>     @AfterMethod
-<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {
-<a class="jxr_linenumber" name="121" href="#121">121</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="122" href="#122">122</a>             LOG.info(<span class="jxr_string">"tearing Down"</span>);
-<a class="jxr_linenumber" name="123" href="#123">123</a>             HBaseAdmin admin = testutil.getHBaseAdmin();
-<a class="jxr_linenumber" name="124" href="#124">124</a>             admin.disableTable(TEST_TABLE);
-<a class="jxr_linenumber" name="125" href="#125">125</a>             admin.deleteTable(TEST_TABLE);
-<a class="jxr_linenumber" name="126" href="#126">126</a> 
-<a class="jxr_linenumber" name="127" href="#127">127</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="128" href="#128">128</a>             LOG.error(<span class="jxr_string">"Error tearing down"</span>, e);
-<a class="jxr_linenumber" name="129" href="#129">129</a>         }
-<a class="jxr_linenumber" name="130" href="#130">130</a>     }
-<a class="jxr_linenumber" name="131" href="#131">131</a> 
-<a class="jxr_linenumber" name="132" href="#132">132</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBasicBehaviour() <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="134" href="#134">134</a>         HBaseCommitTableConfig config = <strong class="jxr_keyword">new</strong> HBaseCommitTableConfig();
-<a class="jxr_linenumber" name="135" href="#135">135</a>         config.setTableName(TEST_TABLE);
-<a class="jxr_linenumber" name="136" href="#136">136</a>         HBaseCommitTable commitTable = <strong class="jxr_keyword">new</strong> HBaseCommitTable(hbaseConf, config);
-<a class="jxr_linenumber" name="137" href="#137">137</a> 
-<a class="jxr_linenumber" name="138" href="#138">138</a>         Writer writer = commitTable.getWriter();
-<a class="jxr_linenumber" name="139" href="#139">139</a>         Client client = commitTable.getClient();
-<a class="jxr_linenumber" name="140" href="#140">140</a> 
-<a class="jxr_linenumber" name="141" href="#141">141</a>         <em class="jxr_comment">// Test that the first time the table is empty</em>
-<a class="jxr_linenumber" name="142" href="#142">142</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 0, <span class="jxr_string">"Rows should be 0!"</span>);
-<a class="jxr_linenumber" name="143" href="#143">143</a> 
-<a class="jxr_linenumber" name="144" href="#144">144</a>         <em class="jxr_comment">// Test the successful creation of 1000 txs in the table</em>
-<a class="jxr_linenumber" name="145" href="#145">145</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 1000; i++) {
-<a class="jxr_linenumber" name="146" href="#146">146</a>             writer.addCommittedTransaction(i, i + 1);
-<a class="jxr_linenumber" name="147" href="#147">147</a>         }
-<a class="jxr_linenumber" name="148" href="#148">148</a>         writer.flush();
-<a class="jxr_linenumber" name="149" href="#149">149</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 1000, <span class="jxr_string">"Rows should be 1000!"</span>);
-<a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>         <em class="jxr_comment">// Test the we get the right commit timestamps for each previously inserted tx</em>
-<a class="jxr_linenumber" name="152" href="#152">152</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> i = 0; i &lt; 1000; i++) {
-<a class="jxr_linenumber" name="153" href="#153">153</a>             Optional&lt;CommitTimestamp&gt; commitTimestamp = client.getCommitTimestamp(i).get();
-<a class="jxr_linenumber" name="154" href="#154">154</a>             assertTrue(commitTimestamp.isPresent());
-<a class="jxr_linenumber" name="155" href="#155">155</a>             assertTrue(commitTimestamp.get().isValid());
-<a class="jxr_linenumber" name="156" href="#156">156</a>             <strong class="jxr_keyword">long</strong> ct = commitTimestamp.get().getValue();
-<a class="jxr_linenumber" name="157" href="#157">157</a>             assertEquals(ct, (i + 1), <span class="jxr_string">"Commit timestamp should be "</span> + (i + 1));
-<a class="jxr_linenumber" name="158" href="#158">158</a>         }
-<a class="jxr_linenumber" name="159" href="#159">159</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 1000, <span class="jxr_string">"Rows should be 1000!"</span>);
-<a class="jxr_linenumber" name="160" href="#160">160</a> 
-<a class="jxr_linenumber" name="161" href="#161">161</a>         <em class="jxr_comment">// Test the successful deletion of the 1000 txs</em>
-<a class="jxr_linenumber" name="162" href="#162">162</a>         Future&lt;Void&gt; f;
-<a class="jxr_linenumber" name="163" href="#163">163</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> i = 0; i &lt; 1000; i++) {
-<a class="jxr_linenumber" name="164" href="#164">164</a>             f = client.completeTransaction(i);
-<a class="jxr_linenumber" name="165" href="#165">165</a>             f.get();
-<a class="jxr_linenumber" name="166" href="#166">166</a>         }
-<a class="jxr_linenumber" name="167" href="#167">167</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 0, <span class="jxr_string">"Rows should be 0!"</span>);
-<a class="jxr_linenumber" name="168" href="#168">168</a> 
-<a class="jxr_linenumber" name="169" href="#169">169</a>         <em class="jxr_comment">// Test we don't get a commit timestamp for a non-existent transaction id in the table</em>
-<a class="jxr_linenumber" name="170" href="#170">170</a>         Optional&lt;CommitTimestamp&gt; commitTimestamp = client.getCommitTimestamp(0).get();
-<a class="jxr_linenumber" name="171" href="#171">171</a>         assertFalse(commitTimestamp.isPresent(), <span class="jxr_string">"Commit timestamp should not be present"</span>);
+<a class="jxr_linenumber" name="117" href="#117">117</a>         HTableDescriptor[] tables = admin.listTables();
+<a class="jxr_linenumber" name="118" href="#118">118</a>         <strong class="jxr_keyword">for</strong> (HTableDescriptor t : tables) {
+<a class="jxr_linenumber" name="119" href="#119">119</a>             LOG.info(t.getNameAsString());
+<a class="jxr_linenumber" name="120" href="#120">120</a>         }
+<a class="jxr_linenumber" name="121" href="#121">121</a>     }
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>     @AfterMethod
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {
+<a class="jxr_linenumber" name="125" href="#125">125</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="126" href="#126">126</a>             LOG.info(<span class="jxr_string">"tearing Down"</span>);
+<a class="jxr_linenumber" name="127" href="#127">127</a>             Admin admin = testutil.getHBaseAdmin();
+<a class="jxr_linenumber" name="128" href="#128">128</a>             admin.disableTable(TableName.valueOf(TEST_TABLE));
+<a class="jxr_linenumber" name="129" href="#129">129</a>             admin.deleteTable(TableName.valueOf(TEST_TABLE));
+<a class="jxr_linenumber" name="130" href="#130">130</a> 
+<a class="jxr_linenumber" name="131" href="#131">131</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="132" href="#132">132</a>             LOG.error(<span class="jxr_string">"Error tearing down"</span>, e);
+<a class="jxr_linenumber" name="133" href="#133">133</a>         }
+<a class="jxr_linenumber" name="134" href="#134">134</a>     }
+<a class="jxr_linenumber" name="135" href="#135">135</a> 
+<a class="jxr_linenumber" name="136" href="#136">136</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBasicBehaviour() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="138" href="#138">138</a>         HBaseCommitTableConfig config = <strong class="jxr_keyword">new</strong> HBaseCommitTableConfig();
+<a class="jxr_linenumber" name="139" href="#139">139</a>         config.setTableName(TEST_TABLE);
+<a class="jxr_linenumber" name="140" href="#140">140</a>         HBaseCommitTable commitTable = <strong class="jxr_keyword">new</strong> HBaseCommitTable(hbaseConf, config);
+<a class="jxr_linenumber" name="141" href="#141">141</a> 
+<a class="jxr_linenumber" name="142" href="#142">142</a>         Writer writer = commitTable.getWriter();
+<a class="jxr_linenumber" name="143" href="#143">143</a>         Client client = commitTable.getClient();
+<a class="jxr_linenumber" name="144" href="#144">144</a> 
+<a class="jxr_linenumber" name="145" href="#145">145</a>         <em class="jxr_comment">// Test that the first time the table is empty</em>
+<a class="jxr_linenumber" name="146" href="#146">146</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 0, <span class="jxr_string">"Rows should be 0!"</span>);
+<a class="jxr_linenumber" name="147" href="#147">147</a> 
+<a class="jxr_linenumber" name="148" href="#148">148</a>         <em class="jxr_comment">// Test the successful creation of 1000 txs in the table</em>
+<a class="jxr_linenumber" name="149" href="#149">149</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 1000; i++) {
+<a class="jxr_linenumber" name="150" href="#150">150</a>             writer.addCommittedTransaction(i, i + 1);
+<a class="jxr_linenumber" name="151" href="#151">151</a>         }
+<a class="jxr_linenumber" name="152" href="#152">152</a>         writer.flush();
+<a class="jxr_linenumber" name="153" href="#153">153</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 1000, <span class="jxr_string">"Rows should be 1000!"</span>);
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>         <em class="jxr_comment">// Test the we get the right commit timestamps for each previously inserted tx</em>
+<a class="jxr_linenumber" name="156" href="#156">156</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> i = 0; i &lt; 1000; i++) {
+<a class="jxr_linenumber" name="157" href="#157">157</a>             Optional&lt;CommitTimestamp&gt; commitTimestamp = client.getCommitTimestamp(i).get();
+<a class="jxr_linenumber" name="158" href="#158">158</a>             assertTrue(commitTimestamp.isPresent());
+<a class="jxr_linenumber" name="159" href="#159">159</a>             assertTrue(commitTimestamp.get().isValid());
+<a class="jxr_linenumber" name="160" href="#160">160</a>             <strong class="jxr_keyword">long</strong> ct = commitTimestamp.get().getValue();
+<a class="jxr_linenumber" name="161" href="#161">161</a>             assertEquals(ct, (i + 1), <span class="jxr_string">"Commit timestamp should be "</span> + (i + 1));
+<a class="jxr_linenumber" name="162" href="#162">162</a>         }
+<a class="jxr_linenumber" name="163" href="#163">163</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 1000, <span class="jxr_string">"Rows should be 1000!"</span>);
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>         <em class="jxr_comment">// Test the successful deletion of the 1000 txs</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a>         Future&lt;Void&gt; f;
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> i = 0; i &lt; 1000; i++) {
+<a class="jxr_linenumber" name="168" href="#168">168</a>             f = client.completeTransaction(i);
+<a class="jxr_linenumber" name="169" href="#169">169</a>             f.get();
+<a class="jxr_linenumber" name="170" href="#170">170</a>         }
+<a class="jxr_linenumber" name="171" href="#171">171</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 0, <span class="jxr_string">"Rows should be 0!"</span>);
 <a class="jxr_linenumber" name="172" href="#172">172</a> 
-<a class="jxr_linenumber" name="173" href="#173">173</a>         <em class="jxr_comment">// Test that the first time, the low watermark family in table is empty</em>
-<a class="jxr_linenumber" name="174" href="#174">174</a>         assertEquals(rowCount(TABLE_NAME, lowWatermarkFamily), 0, <span class="jxr_string">"Rows should be 0!"</span>);
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>         <em class="jxr_comment">// Test the unsuccessful read of the low watermark the first time</em>
-<a class="jxr_linenumber" name="177" href="#177">177</a>         ListenableFuture&lt;Long&gt; lowWatermarkFuture = client.readLowWatermark();
-<a class="jxr_linenumber" name="178" href="#178">178</a>         assertEquals(lowWatermarkFuture.get(), Long.valueOf(0), <span class="jxr_string">"Low watermark should be 0"</span>);
+<a class="jxr_linenumber" name="173" href="#173">173</a>         <em class="jxr_comment">// Test we don't get a commit timestamp for a non-existent transaction id in the table</em>
+<a class="jxr_linenumber" name="174" href="#174">174</a>         Optional&lt;CommitTimestamp&gt; commitTimestamp = client.getCommitTimestamp(0).get();
+<a class="jxr_linenumber" name="175" href="#175">175</a>         assertFalse(commitTimestamp.isPresent(), <span class="jxr_string">"Commit timestamp should not be present"</span>);
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>         <em class="jxr_comment">// Test that the first time, the low watermark family in table is empty</em>
+<a class="jxr_linenumber" name="178" href="#178">178</a>         assertEquals(rowCount(TABLE_NAME, lowWatermarkFamily), 0, <span class="jxr_string">"Rows should be 0!"</span>);
 <a class="jxr_linenumber" name="179" href="#179">179</a> 
-<a class="jxr_linenumber" name="180" href="#180">180</a>         <em class="jxr_comment">// Test the successful update of the low watermark</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> lowWatermark = 0; lowWatermark &lt; 1000; lowWatermark++) {
-<a class="jxr_linenumber" name="182" href="#182">182</a>             writer.updateLowWatermark(lowWatermark);
-<a class="jxr_linenumber" name="183" href="#183">183</a>         }
-<a class="jxr_linenumber" name="184" href="#184">184</a>         writer.flush();
-<a class="jxr_linenumber" name="185" href="#185">185</a>         assertEquals(rowCount(TABLE_NAME, lowWatermarkFamily), 1, <span class="jxr_string">"Should there be only one row!"</span>);
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>         <em class="jxr_comment">// Test the successful read of the low watermark</em>
-<a class="jxr_linenumber" name="188" href="#188">188</a>         lowWatermarkFuture = client.readLowWatermark();
-<a class="jxr_linenumber" name="189" href="#189">189</a>         <strong class="jxr_keyword">long</strong> lowWatermark = lowWatermarkFuture.get();
-<a class="jxr_linenumber" name="190" href="#190">190</a>         assertEquals(lowWatermark, 999, <span class="jxr_string">"Low watermark should be 999"</span>);
-<a class="jxr_linenumber" name="191" href="#191">191</a>         assertEquals(rowCount(TABLE_NAME, lowWatermarkFamily), 1, <span class="jxr_string">"Should there be only one row!"</span>);
-<a class="jxr_linenumber" name="192" href="#192">192</a> 
-<a class="jxr_linenumber" name="193" href="#193">193</a>     }
-<a class="jxr_linenumber" name="194" href="#194">194</a> 
-<a class="jxr_linenumber" name="195" href="#195">195</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionInvalidation() <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="197" href="#197">197</a> 
-<a class="jxr_linenumber" name="198" href="#198">198</a>         <em class="jxr_comment">// Prepare test</em>
-<a class="jxr_linenumber" name="199" href="#199">199</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TX1_ST = 1;
-<a class="jxr_linenumber" name="200" href="#200">200</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TX1_CT = 2;
-<a class="jxr_linenumber" name="201" href="#201">201</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TX2_ST = 11;
-<a class="jxr_linenumber" name="202" href="#202">202</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TX2_CT = 12;
-<a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>         HBaseCommitTableConfig config = <strong class="jxr_keyword">new</strong> HBaseCommitTableConfig();
-<a class="jxr_linenumber" name="205" href="#205">205</a>         config.setTableName(TEST_TABLE);
-<a class="jxr_linenumber" name="206" href="#206">206</a>         HBaseCommitTable commitTable = <strong class="jxr_keyword">new</strong> HBaseCommitTable(hbaseConf, config);
+<a class="jxr_linenumber" name="180" href="#180">180</a>         <em class="jxr_comment">// Test the unsuccessful read of the low watermark the first time</em>
+<a class="jxr_linenumber" name="181" href="#181">181</a>         ListenableFuture&lt;Long&gt; lowWatermarkFuture = client.readLowWatermark();
+<a class="jxr_linenumber" name="182" href="#182">182</a>         assertEquals(lowWatermarkFuture.get(), Long.valueOf(0), <span class="jxr_string">"Low watermark should be 0"</span>);
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <em class="jxr_comment">// Test the successful update of the low watermark</em>
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> lowWatermark = 0; lowWatermark &lt; 1000; lowWatermark++) {
+<a class="jxr_linenumber" name="186" href="#186">186</a>             writer.updateLowWatermark(lowWatermark);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         }
+<a class="jxr_linenumber" name="188" href="#188">188</a>         writer.flush();
+<a class="jxr_linenumber" name="189" href="#189">189</a>         assertEquals(rowCount(TABLE_NAME, lowWatermarkFamily), 1, <span class="jxr_string">"Should there be only one row!"</span>);
+<a class="jxr_linenumber" name="190" href="#190">190</a> 
+<a class="jxr_linenumber" name="191" href="#191">191</a>         <em class="jxr_comment">// Test the successful read of the low watermark</em>
+<a class="jxr_linenumber" name="192" href="#192">192</a>         lowWatermarkFuture = client.readLowWatermark();
+<a class="jxr_linenumber" name="193" href="#193">193</a>         <strong class="jxr_keyword">long</strong> lowWatermark = lowWatermarkFuture.get();
+<a class="jxr_linenumber" name="194" href="#194">194</a>         assertEquals(lowWatermark, 999, <span class="jxr_string">"Low watermark should be 999"</span>);
+<a class="jxr_linenumber" name="195" href="#195">195</a>         assertEquals(rowCount(TABLE_NAME, lowWatermarkFamily), 1, <span class="jxr_string">"Should there be only one row!"</span>);
+<a class="jxr_linenumber" name="196" href="#196">196</a> 
+<a class="jxr_linenumber" name="197" href="#197">197</a>     }
+<a class="jxr_linenumber" name="198" href="#198">198</a> 
+<a class="jxr_linenumber" name="199" href="#199">199</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="200" href="#200">200</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionInvalidation() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>         <em class="jxr_comment">// Prepare test</em>
+<a class="jxr_linenumber" name="203" href="#203">203</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TX1_ST = 1;
+<a class="jxr_linenumber" name="204" href="#204">204</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TX1_CT = 2;
+<a class="jxr_linenumber" name="205" href="#205">205</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TX2_ST = 11;
+<a class="jxr_linenumber" name="206" href="#206">206</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TX2_CT = 12;
 <a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>         <em class="jxr_comment">// Components under test</em>
-<a class="jxr_linenumber" name="209" href="#209">209</a>         Writer writer = commitTable.getWriter();
-<a class="jxr_linenumber" name="210" href="#210">210</a>         Client client = commitTable.getClient();
+<a class="jxr_linenumber" name="208" href="#208">208</a>         HBaseCommitTableConfig config = <strong class="jxr_keyword">new</strong> HBaseCommitTableConfig();
+<a class="jxr_linenumber" name="209" href="#209">209</a>         config.setTableName(TEST_TABLE);
+<a class="jxr_linenumber" name="210" href="#210">210</a>         HBaseCommitTable commitTable = <strong class="jxr_keyword">new</strong> HBaseCommitTable(hbaseConf, config);
 <a class="jxr_linenumber" name="211" href="#211">211</a> 
-<a class="jxr_linenumber" name="212" href="#212">212</a>         <em class="jxr_comment">// Test that initially the table is empty</em>
-<a class="jxr_linenumber" name="213" href="#213">213</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 0, <span class="jxr_string">"Rows should be 0!"</span>);
-<a class="jxr_linenumber" name="214" href="#214">214</a> 
-<a class="jxr_linenumber" name="215" href="#215">215</a>         <em class="jxr_comment">// Test that a transaction can be added properly to the commit table</em>
-<a class="jxr_linenumber" name="216" href="#216">216</a>         writer.addCommittedTransaction(TX1_ST, TX1_CT);
-<a class="jxr_linenumber" name="217" href="#217">217</a>         writer.flush();
-<a class="jxr_linenumber" name="218" href="#218">218</a>         Optional&lt;CommitTimestamp&gt; commitTimestamp = client.getCommitTimestamp(TX1_ST).get();
-<a class="jxr_linenumber" name="219" href="#219">219</a>         assertTrue(commitTimestamp.isPresent());
-<a class="jxr_linenumber" name="220" href="#220">220</a>         assertTrue(commitTimestamp.get().isValid());
-<a class="jxr_linenumber" name="221" href="#221">221</a>         <strong class="jxr_keyword">long</strong> ct = commitTimestamp.get().getValue();
-<a class="jxr_linenumber" name="222" href="#222">222</a>         assertEquals(ct, TX1_CT, <span class="jxr_string">"Commit timestamp should be "</span> + TX1_CT);
-<a class="jxr_linenumber" name="223" href="#223">223</a> 
-<a class="jxr_linenumber" name="224" href="#224">224</a>         <em class="jxr_comment">// Test that a committed transaction cannot be invalidated and</em>
-<a class="jxr_linenumber" name="225" href="#225">225</a>         <em class="jxr_comment">// preserves its commit timestamp after that</em>
-<a class="jxr_linenumber" name="226" href="#226">226</a>         <strong class="jxr_keyword">boolean</strong> wasInvalidated = client.tryInvalidateTransaction(TX1_ST).get();
-<a class="jxr_linenumber" name="227" href="#227">227</a>         assertFalse(wasInvalidated, <span class="jxr_string">"Transaction should not be invalidated"</span>);
-<a class="jxr_linenumber" name="228" href="#228">228</a> 
-<a class="jxr_linenumber" name="229" href="#229">229</a>         commitTimestamp = client.getCommitTimestamp(TX1_ST).get();
-<a class="jxr_linenumber" name="230" href="#230">230</a>         assertTrue(commitTimestamp.isPresent());
-<a class="jxr_linenumber" name="231" href="#231">231</a>         assertTrue(commitTimestamp.get().isValid());
-<a class="jxr_linenumber" name="232" href="#232">232</a>         ct = commitTimestamp.get().getValue();
-<a class="jxr_linenumber" name="233" href="#233">233</a>         assertEquals(ct, TX1_CT, <span class="jxr_string">"Commit timestamp should be "</span> + TX1_CT);
-<a class="jxr_linenumber" name="234" href="#234">234</a> 
-<a class="jxr_linenumber" name="235" href="#235">235</a>         <em class="jxr_comment">// Test that a non-committed transaction can be invalidated...</em>
-<a class="jxr_linenumber" name="236" href="#236">236</a>         wasInvalidated = client.tryInvalidateTransaction(TX2_ST).get();
-<a class="jxr_linenumber" name="237" href="#237">237</a>         assertTrue(wasInvalidated, <span class="jxr_string">"Transaction should be invalidated"</span>);
-<a class="jxr_linenumber" name="238" href="#238">238</a>         commitTimestamp = client.getCommitTimestamp(TX2_ST).get();
-<a class="jxr_linenumber" name="239" href="#239">239</a>         assertTrue(commitTimestamp.isPresent());
-<a class="jxr_linenumber" name="240" href="#240">240</a>         assertFalse(commitTimestamp.get().isValid());
-<a class="jxr_linenumber" name="241" href="#241">241</a>         ct = commitTimestamp.get().getValue();
-<a class="jxr_linenumber" name="242" href="#242">242</a>         assertEquals(ct, CommitTable.INVALID_TRANSACTION_MARKER,
-<a class="jxr_linenumber" name="243" href="#243">243</a>                      <span class="jxr_string">"Commit timestamp should be "</span> + CommitTable.INVALID_TRANSACTION_MARKER);
-<a class="jxr_linenumber" name="244" href="#244">244</a>         <em class="jxr_comment">// ...and that if it has been already invalidated, it remains</em>
-<a class="jxr_linenumber" name="245" href="#245">245</a>         <em class="jxr_comment">// invalidated when someone tries to commit it</em>
-<a class="jxr_linenumber" name="246" href="#246">246</a>         writer.addCommittedTransaction(TX2_ST, TX2_CT);
-<a class="jxr_linenumber" name="247" href="#247">247</a>         writer.flush();
-<a class="jxr_linenumber" name="248" href="#248">248</a>         commitTimestamp = client.getCommitTimestamp(TX2_ST).get();
-<a class="jxr_linenumber" name="249" href="#249">249</a>         assertTrue(commitTimestamp.isPresent());
-<a class="jxr_linenumber" name="250" href="#250">250</a>         assertFalse(commitTimestamp.get().isValid());
-<a class="jxr_linenumber" name="251" href="#251">251</a>         ct = commitTimestamp.get().getValue();
-<a class="jxr_linenumber" name="252" href="#252">252</a>         assertEquals(ct, CommitTable.INVALID_TRANSACTION_MARKER,
-<a class="jxr_linenumber" name="253" href="#253">253</a>                      <span class="jxr_string">"Commit timestamp should be "</span> + CommitTable.INVALID_TRANSACTION_MARKER);
-<a class="jxr_linenumber" name="254" href="#254">254</a> 
-<a class="jxr_linenumber" name="255" href="#255">255</a>         <em class="jxr_comment">// Test that at the end of the test, the commit table contains 2</em>
-<a class="jxr_linenumber" name="256" href="#256">256</a>         <em class="jxr_comment">// elements, which correspond to the two rows added in the test</em>
-<a class="jxr_linenumber" name="257" href="#257">257</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 2, <span class="jxr_string">"Rows should be 2!"</span>);
+<a class="jxr_linenumber" name="212" href="#212">212</a>         <em class="jxr_comment">// Components under test</em>
+<a class="jxr_linenumber" name="213" href="#213">213</a>         Writer writer = commitTable.getWriter();
+<a class="jxr_linenumber" name="214" href="#214">214</a>         Client client = commitTable.getClient();
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>         <em class="jxr_comment">// Test that initially the table is empty</em>
+<a class="jxr_linenumber" name="217" href="#217">217</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 0, <span class="jxr_string">"Rows should be 0!"</span>);
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>         <em class="jxr_comment">// Test that a transaction can be added properly to the commit table</em>
+<a class="jxr_linenumber" name="220" href="#220">220</a>         writer.addCommittedTransaction(TX1_ST, TX1_CT);
+<a class="jxr_linenumber" name="221" href="#221">221</a>         writer.flush();
+<a class="jxr_linenumber" name="222" href="#222">222</a>         Optional&lt;CommitTimestamp&gt; commitTimestamp = client.getCommitTimestamp(TX1_ST).get();
+<a class="jxr_linenumber" name="223" href="#223">223</a>         assertTrue(commitTimestamp.isPresent());
+<a class="jxr_linenumber" name="224" href="#224">224</a>         assertTrue(commitTimestamp.get().isValid());
+<a class="jxr_linenumber" name="225" href="#225">225</a>         <strong class="jxr_keyword">long</strong> ct = commitTimestamp.get().getValue();
+<a class="jxr_linenumber" name="226" href="#226">226</a>         assertEquals(ct, TX1_CT, <span class="jxr_string">"Commit timestamp should be "</span> + TX1_CT);
+<a class="jxr_linenumber" name="227" href="#227">227</a> 
+<a class="jxr_linenumber" name="228" href="#228">228</a>         <em class="jxr_comment">// Test that a committed transaction cannot be invalidated and</em>
+<a class="jxr_linenumber" name="229" href="#229">229</a>         <em class="jxr_comment">// preserves its commit timestamp after that</em>
+<a class="jxr_linenumber" name="230" href="#230">230</a>         <strong class="jxr_keyword">boolean</strong> wasInvalidated = client.tryInvalidateTransaction(TX1_ST).get();
+<a class="jxr_linenumber" name="231" href="#231">231</a>         assertFalse(wasInvalidated, <span class="jxr_string">"Transaction should not be invalidated"</span>);
+<a class="jxr_linenumber" name="232" href="#232">232</a> 
+<a class="jxr_linenumber" name="233" href="#233">233</a>         commitTimestamp = client.getCommitTimestamp(TX1_ST).get();
+<a class="jxr_linenumber" name="234" href="#234">234</a>         assertTrue(commitTimestamp.isPresent());
+<a class="jxr_linenumber" name="235" href="#235">235</a>         assertTrue(commitTimestamp.get().isValid());
+<a class="jxr_linenumber" name="236" href="#236">236</a>         ct = commitTimestamp.get().getValue();
+<a class="jxr_linenumber" name="237" href="#237">237</a>         assertEquals(ct, TX1_CT, <span class="jxr_string">"Commit timestamp should be "</span> + TX1_CT);
+<a class="jxr_linenumber" name="238" href="#238">238</a> 
+<a class="jxr_linenumber" name="239" href="#239">239</a>         <em class="jxr_comment">// Test that a non-committed transaction can be invalidated...</em>
+<a class="jxr_linenumber" name="240" href="#240">240</a>         wasInvalidated = client.tryInvalidateTransaction(TX2_ST).get();
+<a class="jxr_linenumber" name="241" href="#241">241</a>         assertTrue(wasInvalidated, <span class="jxr_string">"Transaction should be invalidated"</span>);
+<a class="jxr_linenumber" name="242" href="#242">242</a>         commitTimestamp = client.getCommitTimestamp(TX2_ST).get();
+<a class="jxr_linenumber" name="243" href="#243">243</a>         assertTrue(commitTimestamp.isPresent());
+<a class="jxr_linenumber" name="244" href="#244">244</a>         assertFalse(commitTimestamp.get().isValid());
+<a class="jxr_linenumber" name="245" href="#245">245</a>         ct = commitTimestamp.get().getValue();
+<a class="jxr_linenumber" name="246" href="#246">246</a>         assertEquals(ct, CommitTable.INVALID_TRANSACTION_MARKER,
+<a class="jxr_linenumber" name="247" href="#247">247</a>                      <span class="jxr_string">"Commit timestamp should be "</span> + CommitTable.INVALID_TRANSACTION_MARKER);
+<a class="jxr_linenumber" name="248" href="#248">248</a>         <em class="jxr_comment">// ...and that if it has been already invalidated, it remains</em>
+<a class="jxr_linenumber" name="249" href="#249">249</a>         <em class="jxr_comment">// invalidated when someone tries to commit it</em>
+<a class="jxr_linenumber" name="250" href="#250">250</a>         writer.addCommittedTransaction(TX2_ST, TX2_CT);
+<a class="jxr_linenumber" name="251" href="#251">251</a>         writer.flush();
+<a class="jxr_linenumber" name="252" href="#252">252</a>         commitTimestamp = client.getCommitTimestamp(TX2_ST).get();
+<a class="jxr_linenumber" name="253" href="#253">253</a>         assertTrue(commitTimestamp.isPresent());
+<a class="jxr_linenumber" name="254" href="#254">254</a>         assertFalse(commitTimestamp.get().isValid());
+<a class="jxr_linenumber" name="255" href="#255">255</a>         ct = commitTimestamp.get().getValue();
+<a class="jxr_linenumber" name="256" href="#256">256</a>         assertEquals(ct, CommitTable.INVALID_TRANSACTION_MARKER,
+<a class="jxr_linenumber" name="257" href="#257">257</a>                      <span class="jxr_string">"Commit timestamp should be "</span> + CommitTable.INVALID_TRANSACTION_MARKER);
 <a class="jxr_linenumber" name="258" href="#258">258</a> 
-<a class="jxr_linenumber" name="259" href="#259">259</a>     }
-<a class="jxr_linenumber" name="260" href="#260">260</a> 
-<a class="jxr_linenumber" name="261" href="#261">261</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="262" href="#262">262</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testClosingClientEmptyQueuesProperly() <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="263" href="#263">263</a>         HBaseCommitTableConfig config = <strong class="jxr_keyword">new</strong> HBaseCommitTableConfig();
-<a class="jxr_linenumber" name="264" href="#264">264</a>         config.setTableName(TEST_TABLE);
-<a class="jxr_linenumber" name="265" href="#265">265</a>         HBaseCommitTable commitTable = <strong class="jxr_keyword">new</strong> HBaseCommitTable(hbaseConf, config);
-<a class="jxr_linenumber" name="266" href="#266">266</a> 
-<a class="jxr_linenumber" name="267" href="#267">267</a>         Writer writer = commitTable.getWriter();
-<a class="jxr_linenumber" name="268" href="#268">268</a>         HBaseCommitTable.HBaseClient client = (HBaseClient) commitTable.getClient();
-<a class="jxr_linenumber" name="269" href="#269">269</a> 
-<a class="jxr_linenumber" name="270" href="#270">270</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 1000; i++) {
-<a class="jxr_linenumber" name="271" href="#271">271</a>             writer.addCommittedTransaction(i, i + 1);
-<a class="jxr_linenumber" name="272" href="#272">272</a>         }
-<a class="jxr_linenumber" name="273" href="#273">273</a>         writer.flush();
-<a class="jxr_linenumber" name="274" href="#274">274</a> 
-<a class="jxr_linenumber" name="275" href="#275">275</a>         <em class="jxr_comment">// Completing first transaction should be fine</em>
-<a class="jxr_linenumber" name="276" href="#276">276</a>         client.completeTransaction(0).get();
-<a class="jxr_linenumber" name="277" href="#277">277</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 999, <span class="jxr_string">"Rows should be 999!"</span>);
+<a class="jxr_linenumber" name="259" href="#259">259</a>         <em class="jxr_comment">// Test that at the end of the test, the commit table contains 2</em>
+<a class="jxr_linenumber" name="260" href="#260">260</a>         <em class="jxr_comment">// elements, which correspond to the two rows added in the test</em>
+<a class="jxr_linenumber" name="261" href="#261">261</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 2, <span class="jxr_string">"Rows should be 2!"</span>);
+<a class="jxr_linenumber" name="262" href="#262">262</a> 
+<a class="jxr_linenumber" name="263" href="#263">263</a>     }
+<a class="jxr_linenumber" name="264" href="#264">264</a> 
+<a class="jxr_linenumber" name="265" href="#265">265</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="266" href="#266">266</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testClosingClientEmptyQueuesProperly() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="267" href="#267">267</a>         HBaseCommitTableConfig config = <strong class="jxr_keyword">new</strong> HBaseCommitTableConfig();
+<a class="jxr_linenumber" name="268" href="#268">268</a>         config.setTableName(TEST_TABLE);
+<a class="jxr_linenumber" name="269" href="#269">269</a>         HBaseCommitTable commitTable = <strong class="jxr_keyword">new</strong> HBaseCommitTable(hbaseConf, config);
+<a class="jxr_linenumber" name="270" href="#270">270</a> 
+<a class="jxr_linenumber" name="271" href="#271">271</a>         Writer writer = commitTable.getWriter();
+<a class="jxr_linenumber" name="272" href="#272">272</a>         HBaseCommitTable.HBaseClient client = (HBaseClient) commitTable.getClient();
+<a class="jxr_linenumber" name="273" href="#273">273</a> 
+<a class="jxr_linenumber" name="274" href="#274">274</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 1000; i++) {
+<a class="jxr_linenumber" name="275" href="#275">275</a>             writer.addCommittedTransaction(i, i + 1);
+<a class="jxr_linenumber" name="276" href="#276">276</a>         }
+<a class="jxr_linenumber" name="277" href="#277">277</a>         writer.flush();
 <a class="jxr_linenumber" name="278" href="#278">278</a> 
-<a class="jxr_linenumber" name="279" href="#279">279</a>         <em class="jxr_comment">// When closing, removing a transaction should throw an EE with an IOException</em>
-<a class="jxr_linenumber" name="280" href="#280">280</a>         client.close();
-<a class="jxr_linenumber" name="281" href="#281">281</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="282" href="#282">282</a>             client.completeTransaction(1).get();
-<a class="jxr_linenumber" name="283" href="#283">283</a>             Assert.fail();
-<a class="jxr_linenumber" name="284" href="#284">284</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
-<a class="jxr_linenumber" name="285" href="#285">285</a>             <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="286" href="#286">286</a>         }
-<a class="jxr_linenumber" name="287" href="#287">287</a>         assertEquals(client.deleteQueue.size(), 0, <span class="jxr_string">"Delete queue size should be 0!"</span>);
-<a class="jxr_linenumber" name="288" href="#288">288</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 999, <span class="jxr_string">"Rows should be 999!"</span>);
-<a class="jxr_linenumber" name="289" href="#289">289</a> 
-<a class="jxr_linenumber" name="290" href="#290">290</a>     }
-<a class="jxr_linenumber" name="291" href="#291">291</a> 
-<a class="jxr_linenumber" name="292" href="#292">292</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">long</strong> rowCount(TableName table, byte[] family) <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="293" href="#293">293</a>         Scan scan = <strong class="jxr_keyword">new</strong> Scan();
-<a class="jxr_linenumber" name="294" href="#294">294</a>         scan.addFamily(family);
-<a class="jxr_linenumber" name="295" href="#295">295</a>         <strong class="jxr_keyword">return</strong> aggregationClient.rowCount(table, <strong class="jxr_keyword">new</strong> LongColumnInterpreter(), scan);
-<a class="jxr_linenumber" name="296" href="#296">296</a>     }
-<a class="jxr_linenumber" name="297" href="#297">297</a> 
-<a class="jxr_linenumber" name="298" href="#298">298</a> }
+<a class="jxr_linenumber" name="279" href="#279">279</a>         <em class="jxr_comment">// Completing first transaction should be fine</em>
+<a class="jxr_linenumber" name="280" href="#280">280</a>         client.completeTransaction(0).get();
+<a class="jxr_linenumber" name="281" href="#281">281</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 999, <span class="jxr_string">"Rows should be 999!"</span>);
+<a class="jxr_linenumber" name="282" href="#282">282</a> 
+<a class="jxr_linenumber" name="283" href="#283">283</a>         <em class="jxr_comment">// When closing, removing a transaction should throw an EE with an IOException</em>
+<a class="jxr_linenumber" name="284" href="#284">284</a>         client.close();
+<a class="jxr_linenumber" name="285" href="#285">285</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="286" href="#286">286</a>             client.completeTransaction(1).get();
+<a class="jxr_linenumber" name="287" href="#287">287</a>             Assert.fail();
+<a class="jxr_linenumber" name="288" href="#288">288</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="289" href="#289">289</a>             <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="290" href="#290">290</a>         }
+<a class="jxr_linenumber" name="291" href="#291">291</a>         assertEquals(client.deleteQueue.size(), 0, <span class="jxr_string">"Delete queue size should be 0!"</span>);
+<a class="jxr_linenumber" name="292" href="#292">292</a>         assertEquals(rowCount(TABLE_NAME, commitTableFamily), 999, <span class="jxr_string">"Rows should be 999!"</span>);
+<a class="jxr_linenumber" name="293" href="#293">293</a> 
+<a class="jxr_linenumber" name="294" href="#294">294</a>     }
+<a class="jxr_linenumber" name="295" href="#295">295</a> 
+<a class="jxr_linenumber" name="296" href="#296">296</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">long</strong> rowCount(TableName tableName, byte[] family) <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="297" href="#297">297</a>         Scan scan = <strong class="jxr_keyword">new</strong> Scan();
+<a class="jxr_linenumber" name="298" href="#298">298</a>         scan.addFamily(family);
+<a class="jxr_linenumber" name="299" href="#299">299</a>         Table table = connection.getTable(tableName);
+<a class="jxr_linenumber" name="300" href="#300">300</a>         <strong class="jxr_keyword">try</strong> (ResultScanner scanner = table.getScanner(scan)) {
+<a class="jxr_linenumber" name="301" href="#301">301</a>             <strong class="jxr_keyword">int</strong> count = 0;
+<a class="jxr_linenumber" name="302" href="#302">302</a>             <strong class="jxr_keyword">while</strong> (scanner.next() != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="303" href="#303">303</a>                 count++;
+<a class="jxr_linenumber" name="304" href="#304">304</a>             }
+<a class="jxr_linenumber" name="305" href="#305">305</a>             <strong class="jxr_keyword">return</strong> count;
+<a class="jxr_linenumber" name="306" href="#306">306</a>         }
+<a class="jxr_linenumber" name="307" href="#307">307</a>     }
+<a class="jxr_linenumber" name="308" href="#308">308</a> 
+<a class="jxr_linenumber" name="309" href="#309">309</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/committable/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/committable/hbase/package-frame.html b/xref-test/org/apache/omid/committable/hbase/package-frame.html
index be026b6..71b5192 100644
--- a/xref-test/org/apache/omid/committable/hbase/package-frame.html
+++ b/xref-test/org/apache/omid/committable/hbase/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.committable.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.committable.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/committable/hbase/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/committable/hbase/package-summary.html b/xref-test/org/apache/omid/committable/hbase/package-summary.html
index 24debd1..4de2703 100644
--- a/xref-test/org/apache/omid/committable/hbase/package-summary.html
+++ b/xref-test/org/apache/omid/committable/hbase/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.committable.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.committable.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/committable/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/committable/package-frame.html b/xref-test/org/apache/omid/committable/package-frame.html
index b7936d1..17b6024 100644
--- a/xref-test/org/apache/omid/committable/package-frame.html
+++ b/xref-test/org/apache/omid/committable/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.committable</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.committable</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/committable/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/committable/package-summary.html b/xref-test/org/apache/omid/committable/package-summary.html
index f0b2fe6..acadc77 100644
--- a/xref-test/org/apache/omid/committable/package-summary.html
+++ b/xref-test/org/apache/omid/committable/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.committable</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.committable</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/package-frame.html b/xref-test/org/apache/omid/package-frame.html
index f1e7a74..ba7410e 100644
--- a/xref-test/org/apache/omid/package-frame.html
+++ b/xref-test/org/apache/omid/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid</title>
 		<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -16,12 +16,6 @@
 
       	<ul>
       		          	<li>
-            	<a href="TestReflectionHelper.html" target="classFrame">TestClass</a>
-          	</li>
-          	          	<li>
-            	<a href="TestReflectionHelper.html" target="classFrame">TestReflectionHelper</a>
-          	</li>
-          	          	<li>
             	<a href="TestUtils.html" target="classFrame">TestUtils</a>
           	</li>
           	          	<li>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/package-summary.html b/xref-test/org/apache/omid/package-summary.html
index ae1ce36..b5691c7 100644
--- a/xref-test/org/apache/omid/package-summary.html
+++ b/xref-test/org/apache/omid/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid</title>
 		<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -37,16 +37,6 @@
         	<tbody>
         		            	<tr>
               		<td>
-                		<a href="TestReflectionHelper.html" target="classFrame">TestClass</a>
-              		</td>
-            	</tr>
-				            	<tr>
-              		<td>
-                		<a href="TestReflectionHelper.html" target="classFrame">TestReflectionHelper</a>
-              		</td>
-            	</tr>
-				            	<tr>
-              		<td>
                 		<a href="TestUtils.html" target="classFrame">TestUtils</a>
               		</td>
             	</tr>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.html b/xref-test/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.html
index 3e1240c..7555555 100644
--- a/xref-test/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.html
+++ b/xref-test/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.html
@@ -65,7 +65,7 @@
 <a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> setUpClass() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="56" href="#56">56</a>          <em class="jxr_comment">// HBase setup</em>
 <a class="jxr_linenumber" name="57" href="#57">57</a>          hbaseConf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>          hbaseConf.setBoolean(<span class="jxr_string">"hbase.localcluster.assign.random.ports"</span>,<strong class="jxr_keyword">true</strong>);
 <a class="jxr_linenumber" name="59" href="#59">59</a>          LOG.info(<span class="jxr_string">"Create hbase"</span>);
 <a class="jxr_linenumber" name="60" href="#60">60</a>          testutil = <strong class="jxr_keyword">new</strong> HBaseTestingUtility(hbaseConf);
 <a class="jxr_linenumber" name="61" href="#61">61</a>          hbasecluster = testutil.startMiniCluster(1);
@@ -83,7 +83,7 @@
 <a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="74" href="#74">74</a>          HBaseAdmin admin = testutil.getHBaseAdmin();
 <a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">if</strong> (!admin.tableExists(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME)) {
+<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">if</strong> (!admin.tableExists(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME))) {
 <a class="jxr_linenumber" name="77" href="#77">77</a>              HTableDescriptor desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(TABLE_NAME);
 <a class="jxr_linenumber" name="78" href="#78">78</a>              HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(DEFAULT_TIMESTAMP_STORAGE_CF_NAME);
 <a class="jxr_linenumber" name="79" href="#79">79</a>              datafam.setMaxVersions(Integer.MAX_VALUE);
@@ -92,8 +92,8 @@
 <a class="jxr_linenumber" name="82" href="#82">82</a>              admin.createTable(desc);
 <a class="jxr_linenumber" name="83" href="#83">83</a>          }
 <a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">if</strong> (admin.isTableDisabled(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME)) {
-<a class="jxr_linenumber" name="86" href="#86">86</a>              admin.enableTable(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME);
+<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">if</strong> (admin.isTableDisabled(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME))) {
+<a class="jxr_linenumber" name="86" href="#86">86</a>              admin.enableTable(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME));
 <a class="jxr_linenumber" name="87" href="#87">87</a>          }
 <a class="jxr_linenumber" name="88" href="#88">88</a>          HTableDescriptor[] tables = admin.listTables();
 <a class="jxr_linenumber" name="89" href="#89">89</a>          <strong class="jxr_keyword">for</strong> (HTableDescriptor t : tables) {
@@ -106,10 +106,10 @@
 <a class="jxr_linenumber" name="96" href="#96">96</a>          <strong class="jxr_keyword">try</strong> {
 <a class="jxr_linenumber" name="97" href="#97">97</a>              LOG.info(<span class="jxr_string">"tearing Down"</span>);
 <a class="jxr_linenumber" name="98" href="#98">98</a>              HBaseAdmin admin = testutil.getHBaseAdmin();
-<a class="jxr_linenumber" name="99" href="#99">99</a>              admin.disableTable(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME);
-<a class="jxr_linenumber" name="100" href="#100">100</a>             admin.deleteTable(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME);
+<a class="jxr_linenumber" name="99" href="#99">99</a>              admin.disableTable(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME));
+<a class="jxr_linenumber" name="100" href="#100">100</a>             admin.deleteTable(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME));
 <a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="102" href="#102">102</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
 <a class="jxr_linenumber" name="103" href="#103">103</a>             LOG.error(<span class="jxr_string">"Error tearing down"</span>, e);
 <a class="jxr_linenumber" name="104" href="#104">104</a>         }
 <a class="jxr_linenumber" name="105" href="#105">105</a>     }

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/timestamp/storage/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/timestamp/storage/package-frame.html b/xref-test/org/apache/omid/timestamp/storage/package-frame.html
index f1f7d5e..6330bb2 100644
--- a/xref-test/org/apache/omid/timestamp/storage/package-frame.html
+++ b/xref-test/org/apache/omid/timestamp/storage/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.timestamp.storage</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.timestamp.storage</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/timestamp/storage/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/timestamp/storage/package-summary.html b/xref-test/org/apache/omid/timestamp/storage/package-summary.html
index 99aa6f4..23ae416 100644
--- a/xref-test/org/apache/omid/timestamp/storage/package-summary.html
+++ b/xref-test/org/apache/omid/timestamp/storage/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.timestamp.storage</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.timestamp.storage</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tools/hbase/TestOmidTableManager.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tools/hbase/TestOmidTableManager.html b/xref-test/org/apache/omid/tools/hbase/TestOmidTableManager.html
index c1d2536..5421b5c 100644
--- a/xref-test/org/apache/omid/tools/hbase/TestOmidTableManager.html
+++ b/xref-test/org/apache/omid/tools/hbase/TestOmidTableManager.html
@@ -53,7 +53,7 @@
 <a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUpClass() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="44" href="#44">44</a>          <em class="jxr_comment">// HBase setup</em>
 <a class="jxr_linenumber" name="45" href="#45">45</a>          hbaseConf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>          hbaseConf.setBoolean(<span class="jxr_string">"hbase.localcluster.assign.random.ports"</span>,<strong class="jxr_keyword">true</strong>);
 <a class="jxr_linenumber" name="47" href="#47">47</a>          hBaseTestUtil = <strong class="jxr_keyword">new</strong> HBaseTestingUtility(hbaseConf);
 <a class="jxr_linenumber" name="48" href="#48">48</a>          hBaseTestUtil.startMiniCluster(1);
 <a class="jxr_linenumber" name="49" href="#49">49</a>  

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tools/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tools/hbase/package-frame.html b/xref-test/org/apache/omid/tools/hbase/package-frame.html
index f0a77da..87743e5 100644
--- a/xref-test/org/apache/omid/tools/hbase/package-frame.html
+++ b/xref-test/org/apache/omid/tools/hbase/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.tools.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.tools.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tools/hbase/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tools/hbase/package-summary.html b/xref-test/org/apache/omid/tools/hbase/package-summary.html
index cbc2b29..35e8d48 100644
--- a/xref-test/org/apache/omid/tools/hbase/package-summary.html
+++ b/xref-test/org/apache/omid/tools/hbase/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.tools.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.tools.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>


[28/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/TestLeaseManager.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/TestLeaseManager.html b/xref-test/org/apache/omid/tso/TestLeaseManager.html
index abe4747..196cfa1 100644
--- a/xref-test/org/apache/omid/tso/TestLeaseManager.html
+++ b/xref-test/org/apache/omid/tso/TestLeaseManager.html
@@ -27,405 +27,406 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.tso;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.CuratorFramework;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.test.TestingServer;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.utils.CloseableUtils;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOStateManager.TSOState;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.mockito.ArgumentCaptor;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.mockito.Mock;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterClass;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.client.TSOClient.DEFAULT_ZK_CLUSTER;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyString;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.reset;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.timeout;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.times;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.when;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
 <a class="jxr_linenumber" name="33" href="#33">33</a>  
 <a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
 <a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.client.TSOClient.DEFAULT_ZK_CLUSTER;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.any;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.anyString;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.reset;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.timeout;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.times;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.when;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TestLeaseManager.html">TestLeaseManager</a> {
-<a class="jxr_linenumber" name="51" href="#51">51</a>  
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_EPOCH_1 = 1L;
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_EPOCH_2 = 2L;
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_EPOCH_3 = 3L;
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_LOW_WATERMARK_1 = DUMMY_EPOCH_1;
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_LOW_WATERMARK_2 = DUMMY_EPOCH_2;
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_LOW_WATERMARK_3 = DUMMY_EPOCH_3;
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LEASE_MGR_ID_1 = <span class="jxr_string">"LM1"</span>;
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LEASE_MGR_ID_2 = <span class="jxr_string">"LM2"</span>;
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String INSTANCE_ID_1 = <span class="jxr_string">"LM1"</span> + <span class="jxr_string">"#"</span>;
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String INSTANCE_ID_2 = <span class="jxr_string">"LM2"</span> + <span class="jxr_string">"#"</span>;
-<a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestLeaseManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="65" href="#65">65</a>  
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> TEST_LEASE_PERIOD_IN_MS = 5000; <em class="jxr_comment">// 5 seconds</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>  
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> CuratorFramework zkClient;
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> TestingServer zkServer;
-<a class="jxr_linenumber" name="70" href="#70">70</a>  
-<a class="jxr_linenumber" name="71" href="#71">71</a>      @Mock
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> Panicker panicker;
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a> leaseManager1;
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a> leaseManager2;
-<a class="jxr_linenumber" name="76" href="#76">76</a>  
-<a class="jxr_linenumber" name="77" href="#77">77</a>      @BeforeClass
-<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeClass() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          LOG.info(<span class="jxr_string">"Starting ZK Server"</span>);
-<a class="jxr_linenumber" name="81" href="#81">81</a>          zkServer = TestUtils.provideTestingZKServer();
-<a class="jxr_linenumber" name="82" href="#82">82</a>          LOG.info(<span class="jxr_string">"ZK Server Started @ {}"</span>, zkServer.getConnectString());
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>          zkClient = TestUtils.provideConnectedZKClient(DEFAULT_ZK_CLUSTER);
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>      }
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>      @AfterClass
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterClass() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>          zkClient.close();
-<a class="jxr_linenumber" name="92" href="#92">92</a>  
-<a class="jxr_linenumber" name="93" href="#93">93</a>          CloseableUtils.closeQuietly(zkServer);
-<a class="jxr_linenumber" name="94" href="#94">94</a>          zkServer = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="95" href="#95">95</a>          LOG.info(<span class="jxr_string">"ZK Server Stopped"</span>);
-<a class="jxr_linenumber" name="96" href="#96">96</a>  
-<a class="jxr_linenumber" name="97" href="#97">97</a>      }
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>      @Test(timeOut = 80_000)
-<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testErrorInitializingTSOStateExitsTheTSO() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test0_tsolease"</span>;
-<a class="jxr_linenumber" name="103" href="#103">103</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test0_currenttso"</span>;
-<a class="jxr_linenumber" name="104" href="#104">104</a> 
-<a class="jxr_linenumber" name="105" href="#105">105</a>         Panicker panicker = spy(<strong class="jxr_keyword">new</strong> MockPanicker());
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>         TSOChannelHandler tsoChannelHandler = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="108" href="#108">108</a>         TSOStateManager stateManager = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="109" href="#109">109</a>         when(stateManager.initialize()).thenThrow(<strong class="jxr_keyword">new</strong> IOException());
-<a class="jxr_linenumber" name="110" href="#110">110</a>         leaseManager1 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
-<a class="jxr_linenumber" name="111" href="#111">111</a>                                                  tsoChannelHandler,
-<a class="jxr_linenumber" name="112" href="#112">112</a>                                                  stateManager,
-<a class="jxr_linenumber" name="113" href="#113">113</a>                                                  TEST_LEASE_PERIOD_IN_MS,
-<a class="jxr_linenumber" name="114" href="#114">114</a>                                                  TEST_TSO_LEASE_PATH,
-<a class="jxr_linenumber" name="115" href="#115">115</a>                                                  TEST_CURRENT_TSO_PATH,
-<a class="jxr_linenumber" name="116" href="#116">116</a>                                                  zkClient,
-<a class="jxr_linenumber" name="117" href="#117">117</a>                                                  panicker);
-<a class="jxr_linenumber" name="118" href="#118">118</a>         leaseManager1.startService();
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a>         verify(panicker, timeout(2000).atLeastOnce()).panic(anyString(), any(IOException.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a>         leaseManager1.stopService();
-<a class="jxr_linenumber" name="126" href="#126">126</a> 
-<a class="jxr_linenumber" name="127" href="#127">127</a>     }
-<a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>     @Test(timeOut = 80_000)
-<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLeaseHolderDoesNotChangeWhenPausedForALongTimeAndTheresNoOtherInstance() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="131" href="#131">131</a> 
-<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test1_tsolease"</span>;
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test1_currenttso"</span>;
-<a class="jxr_linenumber" name="134" href="#134">134</a> 
-<a class="jxr_linenumber" name="135" href="#135">135</a>         <em class="jxr_comment">// Launch the instance under test...</em>
-<a class="jxr_linenumber" name="136" href="#136">136</a>         TSOChannelHandler tsoChannelHandler1 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="137" href="#137">137</a>         TSOStateManager stateManager1 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="138" href="#138">138</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_1, DUMMY_EPOCH_1));
-<a class="jxr_linenumber" name="139" href="#139">139</a>         leaseManager1 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
-<a class="jxr_linenumber" name="140" href="#140">140</a>                                                  tsoChannelHandler1,
-<a class="jxr_linenumber" name="141" href="#141">141</a>                                                  stateManager1,
-<a class="jxr_linenumber" name="142" href="#142">142</a>                                                  TEST_LEASE_PERIOD_IN_MS,
-<a class="jxr_linenumber" name="143" href="#143">143</a>                                                  TEST_TSO_LEASE_PATH,
-<a class="jxr_linenumber" name="144" href="#144">144</a>                                                  TEST_CURRENT_TSO_PATH,
-<a class="jxr_linenumber" name="145" href="#145">145</a>                                                  zkClient,
-<a class="jxr_linenumber" name="146" href="#146">146</a>                                                  panicker);
-<a class="jxr_linenumber" name="147" href="#147">147</a>         leaseManager1.startService();
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
-<a class="jxr_linenumber" name="150" href="#150">150</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="151" href="#151">151</a> 
-<a class="jxr_linenumber" name="152" href="#152">152</a>         <em class="jxr_comment">// ... check is the lease holder</em>
-<a class="jxr_linenumber" name="153" href="#153">153</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
-<a class="jxr_linenumber" name="154" href="#154">154</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
-<a class="jxr_linenumber" name="155" href="#155">155</a>         assertTrue(leaseManager1.stillInLeasePeriod());
-<a class="jxr_linenumber" name="156" href="#156">156</a> 
-<a class="jxr_linenumber" name="157" href="#157">157</a>         <em class="jxr_comment">// Then, pause instance when trying to renew lease...</em>
-<a class="jxr_linenumber" name="158" href="#158">158</a>         leaseManager1.pausedInTryToRenewLeasePeriod();
-<a class="jxr_linenumber" name="159" href="#159">159</a> 
-<a class="jxr_linenumber" name="160" href="#160">160</a>         <em class="jxr_comment">// ...let the test run for some time...</em>
-<a class="jxr_linenumber" name="161" href="#161">161</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="162" href="#162">162</a> 
-<a class="jxr_linenumber" name="163" href="#163">163</a>         <em class="jxr_comment">// ...check that nothing changed...</em>
-<a class="jxr_linenumber" name="164" href="#164">164</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
-<a class="jxr_linenumber" name="165" href="#165">165</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
-<a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>         <em class="jxr_comment">// Finally, resume the instance...</em>
-<a class="jxr_linenumber" name="168" href="#168">168</a>         leaseManager1.resume();
-<a class="jxr_linenumber" name="169" href="#169">169</a> 
-<a class="jxr_linenumber" name="170" href="#170">170</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="172" href="#172">172</a> 
-<a class="jxr_linenumber" name="173" href="#173">173</a>         <em class="jxr_comment">// ... and check again that nothing changed</em>
-<a class="jxr_linenumber" name="174" href="#174">174</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
-<a class="jxr_linenumber" name="175" href="#175">175</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
-<a class="jxr_linenumber" name="176" href="#176">176</a>         assertFalse(leaseManager1.stillInLeasePeriod()); <em class="jxr_comment">// Must not be master as it should have triggered and exception</em>
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>     }
-<a class="jxr_linenumber" name="179" href="#179">179</a> 
-<a class="jxr_linenumber" name="180" href="#180">180</a>     @Test(timeOut = 80_000)
-<a class="jxr_linenumber" name="181" href="#181">181</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLeaseHolderDoesNotChangeWhenANewLeaseManagerIsUp() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="182" href="#182">182</a> 
-<a class="jxr_linenumber" name="183" href="#183">183</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test2_tsolease"</span>;
-<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test2_currenttso"</span>;
-<a class="jxr_linenumber" name="185" href="#185">185</a> 
-<a class="jxr_linenumber" name="186" href="#186">186</a>         <em class="jxr_comment">// Launch the master instance...</em>
-<a class="jxr_linenumber" name="187" href="#187">187</a>         TSOChannelHandler tsoChannelHandler1 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="188" href="#188">188</a>         TSOStateManager stateManager1 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="189" href="#189">189</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_1, DUMMY_EPOCH_1));
-<a class="jxr_linenumber" name="190" href="#190">190</a>         leaseManager1 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
-<a class="jxr_linenumber" name="191" href="#191">191</a>                                                  tsoChannelHandler1,
-<a class="jxr_linenumber" name="192" href="#192">192</a>                                                  stateManager1,
-<a class="jxr_linenumber" name="193" href="#193">193</a>                                                  TEST_LEASE_PERIOD_IN_MS,
-<a class="jxr_linenumber" name="194" href="#194">194</a>                                                  TEST_TSO_LEASE_PATH,
-<a class="jxr_linenumber" name="195" href="#195">195</a>                                                  TEST_CURRENT_TSO_PATH,
-<a class="jxr_linenumber" name="196" href="#196">196</a>                                                  zkClient,
-<a class="jxr_linenumber" name="197" href="#197">197</a>                                                  panicker);
-<a class="jxr_linenumber" name="198" href="#198">198</a> 
-<a class="jxr_linenumber" name="199" href="#199">199</a>         leaseManager1.startService();
-<a class="jxr_linenumber" name="200" href="#200">200</a> 
-<a class="jxr_linenumber" name="201" href="#201">201</a>         <em class="jxr_comment">// ...let the test run for some time...</em>
-<a class="jxr_linenumber" name="202" href="#202">202</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>         <em class="jxr_comment">// ...so it should be the current holder of the lease</em>
-<a class="jxr_linenumber" name="205" href="#205">205</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
-<a class="jxr_linenumber" name="206" href="#206">206</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
-<a class="jxr_linenumber" name="207" href="#207">207</a>         assertTrue(leaseManager1.stillInLeasePeriod());
-<a class="jxr_linenumber" name="208" href="#208">208</a> 
-<a class="jxr_linenumber" name="209" href="#209">209</a>         <em class="jxr_comment">// Then launch another instance...</em>
-<a class="jxr_linenumber" name="210" href="#210">210</a>         TSOChannelHandler tsoChannelHandler2 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="211" href="#211">211</a>         TSOStateManager stateManager2 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="212" href="#212">212</a>         when(stateManager2.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_2, DUMMY_EPOCH_2));
-<a class="jxr_linenumber" name="213" href="#213">213</a>         leaseManager2 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_2,
-<a class="jxr_linenumber" name="214" href="#214">214</a>                                                  tsoChannelHandler2,
-<a class="jxr_linenumber" name="215" href="#215">215</a>                                                  stateManager2,
-<a class="jxr_linenumber" name="216" href="#216">216</a>                                                  TEST_LEASE_PERIOD_IN_MS,
-<a class="jxr_linenumber" name="217" href="#217">217</a>                                                  TEST_TSO_LEASE_PATH,
-<a class="jxr_linenumber" name="218" href="#218">218</a>                                                  TEST_CURRENT_TSO_PATH,
-<a class="jxr_linenumber" name="219" href="#219">219</a>                                                  zkClient,
-<a class="jxr_linenumber" name="220" href="#220">220</a>                                                  panicker);
-<a class="jxr_linenumber" name="221" href="#221">221</a>         leaseManager2.startService();
-<a class="jxr_linenumber" name="222" href="#222">222</a> 
-<a class="jxr_linenumber" name="223" href="#223">223</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
-<a class="jxr_linenumber" name="224" href="#224">224</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="225" href="#225">225</a> 
-<a class="jxr_linenumber" name="226" href="#226">226</a>         <em class="jxr_comment">// ... and after the period, the first instance should be still the holder</em>
-<a class="jxr_linenumber" name="227" href="#227">227</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
-<a class="jxr_linenumber" name="228" href="#228">228</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
-<a class="jxr_linenumber" name="229" href="#229">229</a>         assertTrue(leaseManager1.stillInLeasePeriod());
-<a class="jxr_linenumber" name="230" href="#230">230</a>         assertFalse(leaseManager2.stillInLeasePeriod());
-<a class="jxr_linenumber" name="231" href="#231">231</a>     }
-<a class="jxr_linenumber" name="232" href="#232">232</a> 
-<a class="jxr_linenumber" name="233" href="#233">233</a>     @Test(timeOut = 80_000)
-<a class="jxr_linenumber" name="234" href="#234">234</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLeaseHolderChangesWhenActiveLeaseManagerIsPaused() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="235" href="#235">235</a> 
-<a class="jxr_linenumber" name="236" href="#236">236</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test3_tsolease"</span>;
-<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test3_currenttso"</span>;
-<a class="jxr_linenumber" name="238" href="#238">238</a> 
-<a class="jxr_linenumber" name="239" href="#239">239</a>         <em class="jxr_comment">// Launch the master instance...</em>
-<a class="jxr_linenumber" name="240" href="#240">240</a>         TSOChannelHandler tsoChannelHandler1 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="241" href="#241">241</a>         TSOStateManager stateManager1 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="242" href="#242">242</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_1, DUMMY_EPOCH_1));
-<a class="jxr_linenumber" name="243" href="#243">243</a>         leaseManager1 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
-<a class="jxr_linenumber" name="244" href="#244">244</a>                                                  tsoChannelHandler1,
-<a class="jxr_linenumber" name="245" href="#245">245</a>                                                  stateManager1,
-<a class="jxr_linenumber" name="246" href="#246">246</a>                                                  TEST_LEASE_PERIOD_IN_MS,
-<a class="jxr_linenumber" name="247" href="#247">247</a>                                                  TEST_TSO_LEASE_PATH,
-<a class="jxr_linenumber" name="248" href="#248">248</a>                                                  TEST_CURRENT_TSO_PATH,
-<a class="jxr_linenumber" name="249" href="#249">249</a>                                                  zkClient,
-<a class="jxr_linenumber" name="250" href="#250">250</a>                                                  panicker);
-<a class="jxr_linenumber" name="251" href="#251">251</a> 
-<a class="jxr_linenumber" name="252" href="#252">252</a>         leaseManager1.startService();
-<a class="jxr_linenumber" name="253" href="#253">253</a> 
-<a class="jxr_linenumber" name="254" href="#254">254</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
-<a class="jxr_linenumber" name="255" href="#255">255</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="256" href="#256">256</a> 
-<a class="jxr_linenumber" name="257" href="#257">257</a>         <em class="jxr_comment">// ... so it should be the current holder of the lease</em>
-<a class="jxr_linenumber" name="258" href="#258">258</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
-<a class="jxr_linenumber" name="259" href="#259">259</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
-<a class="jxr_linenumber" name="260" href="#260">260</a>         assertTrue(leaseManager1.stillInLeasePeriod());
-<a class="jxr_linenumber" name="261" href="#261">261</a> 
-<a class="jxr_linenumber" name="262" href="#262">262</a>         <em class="jxr_comment">// Then launch another instance...</em>
-<a class="jxr_linenumber" name="263" href="#263">263</a>         TSOChannelHandler tsoChannelHandler2 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="264" href="#264">264</a>         TSOStateManager stateManager2 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="265" href="#265">265</a>         when(stateManager2.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_2, DUMMY_EPOCH_2));
-<a class="jxr_linenumber" name="266" href="#266">266</a>         leaseManager2 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_2,
-<a class="jxr_linenumber" name="267" href="#267">267</a>                                                  tsoChannelHandler2,
-<a class="jxr_linenumber" name="268" href="#268">268</a>                                                  stateManager2,
-<a class="jxr_linenumber" name="269" href="#269">269</a>                                                  TEST_LEASE_PERIOD_IN_MS,
-<a class="jxr_linenumber" name="270" href="#270">270</a>                                                  TEST_TSO_LEASE_PATH,
-<a class="jxr_linenumber" name="271" href="#271">271</a>                                                  TEST_CURRENT_TSO_PATH,
-<a class="jxr_linenumber" name="272" href="#272">272</a>                                                  zkClient,
-<a class="jxr_linenumber" name="273" href="#273">273</a>                                                  panicker);
-<a class="jxr_linenumber" name="274" href="#274">274</a>         leaseManager2.startService();
-<a class="jxr_linenumber" name="275" href="#275">275</a> 
-<a class="jxr_linenumber" name="276" href="#276">276</a>         <em class="jxr_comment">// ... and pause active lease manager...</em>
-<a class="jxr_linenumber" name="277" href="#277">277</a>         leaseManager1.pausedInStillInLeasePeriod();
-<a class="jxr_linenumber" name="278" href="#278">278</a> 
-<a class="jxr_linenumber" name="279" href="#279">279</a>         <em class="jxr_comment">// ... and let the test run for some time...</em>
-<a class="jxr_linenumber" name="280" href="#280">280</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="281" href="#281">281</a> 
-<a class="jxr_linenumber" name="282" href="#282">282</a>         <em class="jxr_comment">// ... and check that lease owner should have changed to the second instance</em>
-<a class="jxr_linenumber" name="283" href="#283">283</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_2);
-<a class="jxr_linenumber" name="284" href="#284">284</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_2 + <span class="jxr_string">"2"</span>);
-<a class="jxr_linenumber" name="285" href="#285">285</a>         assertTrue(leaseManager2.stillInLeasePeriod());
-<a class="jxr_linenumber" name="286" href="#286">286</a> 
-<a class="jxr_linenumber" name="287" href="#287">287</a>         <em class="jxr_comment">// Now, lets resume the first instance...</em>
-<a class="jxr_linenumber" name="288" href="#288">288</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_3, DUMMY_EPOCH_3));
-<a class="jxr_linenumber" name="289" href="#289">289</a>         leaseManager1.resume();
-<a class="jxr_linenumber" name="290" href="#290">290</a> 
-<a class="jxr_linenumber" name="291" href="#291">291</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
-<a class="jxr_linenumber" name="292" href="#292">292</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="293" href="#293">293</a> 
-<a class="jxr_linenumber" name="294" href="#294">294</a>         <em class="jxr_comment">// and check the lease owner is still the second instance (preserves the lease)</em>
-<a class="jxr_linenumber" name="295" href="#295">295</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_2);
-<a class="jxr_linenumber" name="296" href="#296">296</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_2 + <span class="jxr_string">"2"</span>);
-<a class="jxr_linenumber" name="297" href="#297">297</a>         assertFalse(leaseManager1.stillInLeasePeriod());
-<a class="jxr_linenumber" name="298" href="#298">298</a>         assertTrue(leaseManager2.stillInLeasePeriod());
-<a class="jxr_linenumber" name="299" href="#299">299</a> 
-<a class="jxr_linenumber" name="300" href="#300">300</a>         <em class="jxr_comment">// Finally, pause active lease manager when trying to renew lease...</em>
-<a class="jxr_linenumber" name="301" href="#301">301</a>         leaseManager2.pausedInTryToRenewLeasePeriod();
-<a class="jxr_linenumber" name="302" href="#302">302</a> 
-<a class="jxr_linenumber" name="303" href="#303">303</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
-<a class="jxr_linenumber" name="304" href="#304">304</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="305" href="#305">305</a> 
-<a class="jxr_linenumber" name="306" href="#306">306</a>         <em class="jxr_comment">// ... and check lease owner is has changed again to the first instance</em>
-<a class="jxr_linenumber" name="307" href="#307">307</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
-<a class="jxr_linenumber" name="308" href="#308">308</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"3"</span>);
-<a class="jxr_linenumber" name="309" href="#309">309</a>         assertFalse(leaseManager2.stillInLeasePeriod());
-<a class="jxr_linenumber" name="310" href="#310">310</a>         assertTrue(leaseManager1.stillInLeasePeriod());
-<a class="jxr_linenumber" name="311" href="#311">311</a> 
-<a class="jxr_linenumber" name="312" href="#312">312</a>         <em class="jxr_comment">// Resume the second instance...</em>
-<a class="jxr_linenumber" name="313" href="#313">313</a>         leaseManager2.resume();
-<a class="jxr_linenumber" name="314" href="#314">314</a> 
-<a class="jxr_linenumber" name="315" href="#315">315</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
-<a class="jxr_linenumber" name="316" href="#316">316</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="317" href="#317">317</a> 
-<a class="jxr_linenumber" name="318" href="#318">318</a>         <em class="jxr_comment">// ... but the lease owner should still be the first instance</em>
-<a class="jxr_linenumber" name="319" href="#319">319</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
-<a class="jxr_linenumber" name="320" href="#320">320</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"3"</span>);
-<a class="jxr_linenumber" name="321" href="#321">321</a>         assertFalse(leaseManager2.stillInLeasePeriod());
-<a class="jxr_linenumber" name="322" href="#322">322</a>         assertTrue(leaseManager1.stillInLeasePeriod());
-<a class="jxr_linenumber" name="323" href="#323">323</a> 
-<a class="jxr_linenumber" name="324" href="#324">324</a>     }
-<a class="jxr_linenumber" name="325" href="#325">325</a> 
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.CuratorFramework;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.test.TestingServer;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.utils.CloseableUtils;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOStateManager.TSOState;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.mockito.ArgumentCaptor;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.mockito.Mock;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterClass;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TestLeaseManager.html">TestLeaseManager</a> {
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_EPOCH_1 = 1L;
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_EPOCH_2 = 2L;
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_EPOCH_3 = 3L;
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_LOW_WATERMARK_1 = DUMMY_EPOCH_1;
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_LOW_WATERMARK_2 = DUMMY_EPOCH_2;
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> DUMMY_LOW_WATERMARK_3 = DUMMY_EPOCH_3;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LEASE_MGR_ID_1 = <span class="jxr_string">"LM1"</span>;
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LEASE_MGR_ID_2 = <span class="jxr_string">"LM2"</span>;
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String INSTANCE_ID_1 = <span class="jxr_string">"LM1"</span> + <span class="jxr_string">"#"</span>;
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String INSTANCE_ID_2 = <span class="jxr_string">"LM2"</span> + <span class="jxr_string">"#"</span>;
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestLeaseManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="66" href="#66">66</a>  
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> TEST_LEASE_PERIOD_IN_MS = 5000; <em class="jxr_comment">// 5 seconds</em>
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> CuratorFramework zkClient;
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> TestingServer zkServer;
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      @Mock
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> Panicker panicker;
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a> leaseManager1;
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a> leaseManager2;
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
+<a class="jxr_linenumber" name="78" href="#78">78</a>      @BeforeClass
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeClass() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>          LOG.info(<span class="jxr_string">"Starting ZK Server"</span>);
+<a class="jxr_linenumber" name="82" href="#82">82</a>          zkServer = TestUtils.provideTestingZKServer();
+<a class="jxr_linenumber" name="83" href="#83">83</a>          LOG.info(<span class="jxr_string">"ZK Server Started @ {}"</span>, zkServer.getConnectString());
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>          zkClient = TestUtils.provideConnectedZKClient(DEFAULT_ZK_CLUSTER);
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>      }
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>      @AfterClass
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterClass() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>          zkClient.close();
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>          CloseableUtils.closeQuietly(zkServer);
+<a class="jxr_linenumber" name="95" href="#95">95</a>          zkServer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="96" href="#96">96</a>          LOG.info(<span class="jxr_string">"ZK Server Stopped"</span>);
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>      }
+<a class="jxr_linenumber" name="99" href="#99">99</a>  
+<a class="jxr_linenumber" name="100" href="#100">100</a>     @Test(timeOut = 80_000)
+<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testErrorInitializingTSOStateExitsTheTSO() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test0_tsolease"</span>;
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test0_currenttso"</span>;
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         Panicker panicker = spy(<strong class="jxr_keyword">new</strong> MockPanicker());
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>         TSOChannelHandler tsoChannelHandler = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="109" href="#109">109</a>         TSOStateManager stateManager = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="110" href="#110">110</a>         when(stateManager.initialize()).thenThrow(<strong class="jxr_keyword">new</strong> IOException());
+<a class="jxr_linenumber" name="111" href="#111">111</a>         leaseManager1 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
+<a class="jxr_linenumber" name="112" href="#112">112</a>                                                  tsoChannelHandler,
+<a class="jxr_linenumber" name="113" href="#113">113</a>                                                  stateManager,
+<a class="jxr_linenumber" name="114" href="#114">114</a>                                                  TEST_LEASE_PERIOD_IN_MS,
+<a class="jxr_linenumber" name="115" href="#115">115</a>                                                  TEST_TSO_LEASE_PATH,
+<a class="jxr_linenumber" name="116" href="#116">116</a>                                                  TEST_CURRENT_TSO_PATH,
+<a class="jxr_linenumber" name="117" href="#117">117</a>                                                  zkClient,
+<a class="jxr_linenumber" name="118" href="#118">118</a>                                                  panicker);
+<a class="jxr_linenumber" name="119" href="#119">119</a>         leaseManager1.startService();
+<a class="jxr_linenumber" name="120" href="#120">120</a> 
+<a class="jxr_linenumber" name="121" href="#121">121</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
+<a class="jxr_linenumber" name="122" href="#122">122</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="123" href="#123">123</a> 
+<a class="jxr_linenumber" name="124" href="#124">124</a>         verify(panicker, timeout(2000).atLeastOnce()).panic(anyString(), any(IOException.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="125" href="#125">125</a> 
+<a class="jxr_linenumber" name="126" href="#126">126</a>         leaseManager1.stopService();
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>     }
+<a class="jxr_linenumber" name="129" href="#129">129</a> 
+<a class="jxr_linenumber" name="130" href="#130">130</a>     @Test(timeOut = 80_000)
+<a class="jxr_linenumber" name="131" href="#131">131</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLeaseHolderDoesNotChangeWhenPausedForALongTimeAndTheresNoOtherInstance() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test1_tsolease"</span>;
+<a class="jxr_linenumber" name="134" href="#134">134</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test1_currenttso"</span>;
+<a class="jxr_linenumber" name="135" href="#135">135</a> 
+<a class="jxr_linenumber" name="136" href="#136">136</a>         <em class="jxr_comment">// Launch the instance under test...</em>
+<a class="jxr_linenumber" name="137" href="#137">137</a>         TSOChannelHandler tsoChannelHandler1 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="138" href="#138">138</a>         TSOStateManager stateManager1 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="139" href="#139">139</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_1, DUMMY_EPOCH_1));
+<a class="jxr_linenumber" name="140" href="#140">140</a>         leaseManager1 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
+<a class="jxr_linenumber" name="141" href="#141">141</a>                                                  tsoChannelHandler1,
+<a class="jxr_linenumber" name="142" href="#142">142</a>                                                  stateManager1,
+<a class="jxr_linenumber" name="143" href="#143">143</a>                                                  TEST_LEASE_PERIOD_IN_MS,
+<a class="jxr_linenumber" name="144" href="#144">144</a>                                                  TEST_TSO_LEASE_PATH,
+<a class="jxr_linenumber" name="145" href="#145">145</a>                                                  TEST_CURRENT_TSO_PATH,
+<a class="jxr_linenumber" name="146" href="#146">146</a>                                                  zkClient,
+<a class="jxr_linenumber" name="147" href="#147">147</a>                                                  panicker);
+<a class="jxr_linenumber" name="148" href="#148">148</a>         leaseManager1.startService();
+<a class="jxr_linenumber" name="149" href="#149">149</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
+<a class="jxr_linenumber" name="151" href="#151">151</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>         <em class="jxr_comment">// ... check is the lease holder</em>
+<a class="jxr_linenumber" name="154" href="#154">154</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
+<a class="jxr_linenumber" name="155" href="#155">155</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
+<a class="jxr_linenumber" name="156" href="#156">156</a>         assertTrue(leaseManager1.stillInLeasePeriod());
+<a class="jxr_linenumber" name="157" href="#157">157</a> 
+<a class="jxr_linenumber" name="158" href="#158">158</a>         <em class="jxr_comment">// Then, pause instance when trying to renew lease...</em>
+<a class="jxr_linenumber" name="159" href="#159">159</a>         leaseManager1.pausedInTryToRenewLeasePeriod();
+<a class="jxr_linenumber" name="160" href="#160">160</a> 
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <em class="jxr_comment">// ...let the test run for some time...</em>
+<a class="jxr_linenumber" name="162" href="#162">162</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="163" href="#163">163</a> 
+<a class="jxr_linenumber" name="164" href="#164">164</a>         <em class="jxr_comment">// ...check that nothing changed...</em>
+<a class="jxr_linenumber" name="165" href="#165">165</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
+<a class="jxr_linenumber" name="166" href="#166">166</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
+<a class="jxr_linenumber" name="167" href="#167">167</a> 
+<a class="jxr_linenumber" name="168" href="#168">168</a>         <em class="jxr_comment">// Finally, resume the instance...</em>
+<a class="jxr_linenumber" name="169" href="#169">169</a>         leaseManager1.resume();
+<a class="jxr_linenumber" name="170" href="#170">170</a> 
+<a class="jxr_linenumber" name="171" href="#171">171</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
+<a class="jxr_linenumber" name="172" href="#172">172</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="173" href="#173">173</a> 
+<a class="jxr_linenumber" name="174" href="#174">174</a>         <em class="jxr_comment">// ... and check again that nothing changed</em>
+<a class="jxr_linenumber" name="175" href="#175">175</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
+<a class="jxr_linenumber" name="176" href="#176">176</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         assertFalse(leaseManager1.stillInLeasePeriod()); <em class="jxr_comment">// Must not be master as it should have triggered and exception</em>
+<a class="jxr_linenumber" name="178" href="#178">178</a> 
+<a class="jxr_linenumber" name="179" href="#179">179</a>     }
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>     @Test(timeOut = 80_000)
+<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLeaseHolderDoesNotChangeWhenANewLeaseManagerIsUp() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test2_tsolease"</span>;
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test2_currenttso"</span>;
+<a class="jxr_linenumber" name="186" href="#186">186</a> 
+<a class="jxr_linenumber" name="187" href="#187">187</a>         <em class="jxr_comment">// Launch the master instance...</em>
+<a class="jxr_linenumber" name="188" href="#188">188</a>         TSOChannelHandler tsoChannelHandler1 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="189" href="#189">189</a>         TSOStateManager stateManager1 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="190" href="#190">190</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_1, DUMMY_EPOCH_1));
+<a class="jxr_linenumber" name="191" href="#191">191</a>         leaseManager1 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
+<a class="jxr_linenumber" name="192" href="#192">192</a>                                                  tsoChannelHandler1,
+<a class="jxr_linenumber" name="193" href="#193">193</a>                                                  stateManager1,
+<a class="jxr_linenumber" name="194" href="#194">194</a>                                                  TEST_LEASE_PERIOD_IN_MS,
+<a class="jxr_linenumber" name="195" href="#195">195</a>                                                  TEST_TSO_LEASE_PATH,
+<a class="jxr_linenumber" name="196" href="#196">196</a>                                                  TEST_CURRENT_TSO_PATH,
+<a class="jxr_linenumber" name="197" href="#197">197</a>                                                  zkClient,
+<a class="jxr_linenumber" name="198" href="#198">198</a>                                                  panicker);
+<a class="jxr_linenumber" name="199" href="#199">199</a> 
+<a class="jxr_linenumber" name="200" href="#200">200</a>         leaseManager1.startService();
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>         <em class="jxr_comment">// ...let the test run for some time...</em>
+<a class="jxr_linenumber" name="203" href="#203">203</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="204" href="#204">204</a> 
+<a class="jxr_linenumber" name="205" href="#205">205</a>         <em class="jxr_comment">// ...so it should be the current holder of the lease</em>
+<a class="jxr_linenumber" name="206" href="#206">206</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
+<a class="jxr_linenumber" name="207" href="#207">207</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
+<a class="jxr_linenumber" name="208" href="#208">208</a>         assertTrue(leaseManager1.stillInLeasePeriod());
+<a class="jxr_linenumber" name="209" href="#209">209</a> 
+<a class="jxr_linenumber" name="210" href="#210">210</a>         <em class="jxr_comment">// Then launch another instance...</em>
+<a class="jxr_linenumber" name="211" href="#211">211</a>         TSOChannelHandler tsoChannelHandler2 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="212" href="#212">212</a>         TSOStateManager stateManager2 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="213" href="#213">213</a>         when(stateManager2.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_2, DUMMY_EPOCH_2));
+<a class="jxr_linenumber" name="214" href="#214">214</a>         leaseManager2 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_2,
+<a class="jxr_linenumber" name="215" href="#215">215</a>                                                  tsoChannelHandler2,
+<a class="jxr_linenumber" name="216" href="#216">216</a>                                                  stateManager2,
+<a class="jxr_linenumber" name="217" href="#217">217</a>                                                  TEST_LEASE_PERIOD_IN_MS,
+<a class="jxr_linenumber" name="218" href="#218">218</a>                                                  TEST_TSO_LEASE_PATH,
+<a class="jxr_linenumber" name="219" href="#219">219</a>                                                  TEST_CURRENT_TSO_PATH,
+<a class="jxr_linenumber" name="220" href="#220">220</a>                                                  zkClient,
+<a class="jxr_linenumber" name="221" href="#221">221</a>                                                  panicker);
+<a class="jxr_linenumber" name="222" href="#222">222</a>         leaseManager2.startService();
+<a class="jxr_linenumber" name="223" href="#223">223</a> 
+<a class="jxr_linenumber" name="224" href="#224">224</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
+<a class="jxr_linenumber" name="225" href="#225">225</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>         <em class="jxr_comment">// ... and after the period, the first instance should be still the holder</em>
+<a class="jxr_linenumber" name="228" href="#228">228</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
+<a class="jxr_linenumber" name="229" href="#229">229</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
+<a class="jxr_linenumber" name="230" href="#230">230</a>         assertTrue(leaseManager1.stillInLeasePeriod());
+<a class="jxr_linenumber" name="231" href="#231">231</a>         assertFalse(leaseManager2.stillInLeasePeriod());
+<a class="jxr_linenumber" name="232" href="#232">232</a>     }
+<a class="jxr_linenumber" name="233" href="#233">233</a> 
+<a class="jxr_linenumber" name="234" href="#234">234</a>     @Test(timeOut = 80_000)
+<a class="jxr_linenumber" name="235" href="#235">235</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLeaseHolderChangesWhenActiveLeaseManagerIsPaused() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="236" href="#236">236</a> 
+<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test3_tsolease"</span>;
+<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test3_currenttso"</span>;
+<a class="jxr_linenumber" name="239" href="#239">239</a> 
+<a class="jxr_linenumber" name="240" href="#240">240</a>         <em class="jxr_comment">// Launch the master instance...</em>
+<a class="jxr_linenumber" name="241" href="#241">241</a>         TSOChannelHandler tsoChannelHandler1 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="242" href="#242">242</a>         TSOStateManager stateManager1 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="243" href="#243">243</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_1, DUMMY_EPOCH_1));
+<a class="jxr_linenumber" name="244" href="#244">244</a>         leaseManager1 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
+<a class="jxr_linenumber" name="245" href="#245">245</a>                                                  tsoChannelHandler1,
+<a class="jxr_linenumber" name="246" href="#246">246</a>                                                  stateManager1,
+<a class="jxr_linenumber" name="247" href="#247">247</a>                                                  TEST_LEASE_PERIOD_IN_MS,
+<a class="jxr_linenumber" name="248" href="#248">248</a>                                                  TEST_TSO_LEASE_PATH,
+<a class="jxr_linenumber" name="249" href="#249">249</a>                                                  TEST_CURRENT_TSO_PATH,
+<a class="jxr_linenumber" name="250" href="#250">250</a>                                                  zkClient,
+<a class="jxr_linenumber" name="251" href="#251">251</a>                                                  panicker);
+<a class="jxr_linenumber" name="252" href="#252">252</a> 
+<a class="jxr_linenumber" name="253" href="#253">253</a>         leaseManager1.startService();
+<a class="jxr_linenumber" name="254" href="#254">254</a> 
+<a class="jxr_linenumber" name="255" href="#255">255</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
+<a class="jxr_linenumber" name="256" href="#256">256</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="257" href="#257">257</a> 
+<a class="jxr_linenumber" name="258" href="#258">258</a>         <em class="jxr_comment">// ... so it should be the current holder of the lease</em>
+<a class="jxr_linenumber" name="259" href="#259">259</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
+<a class="jxr_linenumber" name="260" href="#260">260</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"1"</span>);
+<a class="jxr_linenumber" name="261" href="#261">261</a>         assertTrue(leaseManager1.stillInLeasePeriod());
+<a class="jxr_linenumber" name="262" href="#262">262</a> 
+<a class="jxr_linenumber" name="263" href="#263">263</a>         <em class="jxr_comment">// Then launch another instance...</em>
+<a class="jxr_linenumber" name="264" href="#264">264</a>         TSOChannelHandler tsoChannelHandler2 = mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="265" href="#265">265</a>         TSOStateManager stateManager2 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="266" href="#266">266</a>         when(stateManager2.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_2, DUMMY_EPOCH_2));
+<a class="jxr_linenumber" name="267" href="#267">267</a>         leaseManager2 = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_2,
+<a class="jxr_linenumber" name="268" href="#268">268</a>                                                  tsoChannelHandler2,
+<a class="jxr_linenumber" name="269" href="#269">269</a>                                                  stateManager2,
+<a class="jxr_linenumber" name="270" href="#270">270</a>                                                  TEST_LEASE_PERIOD_IN_MS,
+<a class="jxr_linenumber" name="271" href="#271">271</a>                                                  TEST_TSO_LEASE_PATH,
+<a class="jxr_linenumber" name="272" href="#272">272</a>                                                  TEST_CURRENT_TSO_PATH,
+<a class="jxr_linenumber" name="273" href="#273">273</a>                                                  zkClient,
+<a class="jxr_linenumber" name="274" href="#274">274</a>                                                  panicker);
+<a class="jxr_linenumber" name="275" href="#275">275</a>         leaseManager2.startService();
+<a class="jxr_linenumber" name="276" href="#276">276</a> 
+<a class="jxr_linenumber" name="277" href="#277">277</a>         <em class="jxr_comment">// ... and pause active lease manager...</em>
+<a class="jxr_linenumber" name="278" href="#278">278</a>         leaseManager1.pausedInStillInLeasePeriod();
+<a class="jxr_linenumber" name="279" href="#279">279</a> 
+<a class="jxr_linenumber" name="280" href="#280">280</a>         <em class="jxr_comment">// ... and let the test run for some time...</em>
+<a class="jxr_linenumber" name="281" href="#281">281</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="282" href="#282">282</a> 
+<a class="jxr_linenumber" name="283" href="#283">283</a>         <em class="jxr_comment">// ... and check that lease owner should have changed to the second instance</em>
+<a class="jxr_linenumber" name="284" href="#284">284</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_2);
+<a class="jxr_linenumber" name="285" href="#285">285</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_2 + <span class="jxr_string">"2"</span>);
+<a class="jxr_linenumber" name="286" href="#286">286</a>         assertTrue(leaseManager2.stillInLeasePeriod());
+<a class="jxr_linenumber" name="287" href="#287">287</a> 
+<a class="jxr_linenumber" name="288" href="#288">288</a>         <em class="jxr_comment">// Now, lets resume the first instance...</em>
+<a class="jxr_linenumber" name="289" href="#289">289</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_3, DUMMY_EPOCH_3));
+<a class="jxr_linenumber" name="290" href="#290">290</a>         leaseManager1.resume();
+<a class="jxr_linenumber" name="291" href="#291">291</a> 
+<a class="jxr_linenumber" name="292" href="#292">292</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
+<a class="jxr_linenumber" name="293" href="#293">293</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="294" href="#294">294</a> 
+<a class="jxr_linenumber" name="295" href="#295">295</a>         <em class="jxr_comment">// and check the lease owner is still the second instance (preserves the lease)</em>
+<a class="jxr_linenumber" name="296" href="#296">296</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_2);
+<a class="jxr_linenumber" name="297" href="#297">297</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_2 + <span class="jxr_string">"2"</span>);
+<a class="jxr_linenumber" name="298" href="#298">298</a>         assertFalse(leaseManager1.stillInLeasePeriod());
+<a class="jxr_linenumber" name="299" href="#299">299</a>         assertTrue(leaseManager2.stillInLeasePeriod());
+<a class="jxr_linenumber" name="300" href="#300">300</a> 
+<a class="jxr_linenumber" name="301" href="#301">301</a>         <em class="jxr_comment">// Finally, pause active lease manager when trying to renew lease...</em>
+<a class="jxr_linenumber" name="302" href="#302">302</a>         leaseManager2.pausedInTryToRenewLeasePeriod();
+<a class="jxr_linenumber" name="303" href="#303">303</a> 
+<a class="jxr_linenumber" name="304" href="#304">304</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
+<a class="jxr_linenumber" name="305" href="#305">305</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="306" href="#306">306</a> 
+<a class="jxr_linenumber" name="307" href="#307">307</a>         <em class="jxr_comment">// ... and check lease owner is has changed again to the first instance</em>
+<a class="jxr_linenumber" name="308" href="#308">308</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
+<a class="jxr_linenumber" name="309" href="#309">309</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"3"</span>);
+<a class="jxr_linenumber" name="310" href="#310">310</a>         assertFalse(leaseManager2.stillInLeasePeriod());
+<a class="jxr_linenumber" name="311" href="#311">311</a>         assertTrue(leaseManager1.stillInLeasePeriod());
+<a class="jxr_linenumber" name="312" href="#312">312</a> 
+<a class="jxr_linenumber" name="313" href="#313">313</a>         <em class="jxr_comment">// Resume the second instance...</em>
+<a class="jxr_linenumber" name="314" href="#314">314</a>         leaseManager2.resume();
+<a class="jxr_linenumber" name="315" href="#315">315</a> 
+<a class="jxr_linenumber" name="316" href="#316">316</a>         <em class="jxr_comment">// ... let the test run for some time...</em>
+<a class="jxr_linenumber" name="317" href="#317">317</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
+<a class="jxr_linenumber" name="318" href="#318">318</a> 
+<a class="jxr_linenumber" name="319" href="#319">319</a>         <em class="jxr_comment">// ... but the lease owner should still be the first instance</em>
+<a class="jxr_linenumber" name="320" href="#320">320</a>         checkLeaseHolder(TEST_TSO_LEASE_PATH, LEASE_MGR_ID_1);
+<a class="jxr_linenumber" name="321" href="#321">321</a>         checkInstanceId(TEST_CURRENT_TSO_PATH, INSTANCE_ID_1 + <span class="jxr_string">"3"</span>);
+<a class="jxr_linenumber" name="322" href="#322">322</a>         assertFalse(leaseManager2.stillInLeasePeriod());
+<a class="jxr_linenumber" name="323" href="#323">323</a>         assertTrue(leaseManager1.stillInLeasePeriod());
+<a class="jxr_linenumber" name="324" href="#324">324</a> 
+<a class="jxr_linenumber" name="325" href="#325">325</a>     }
 <a class="jxr_linenumber" name="326" href="#326">326</a> 
-<a class="jxr_linenumber" name="327" href="#327">327</a>     @Test(timeOut = 80_000)
-<a class="jxr_linenumber" name="328" href="#328">328</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLeaseManagerPanicsWhenUnexpectedInfoIsFoundInCurrentTSOZnode() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="329" href="#329">329</a> 
-<a class="jxr_linenumber" name="330" href="#330">330</a>         <strong class="jxr_keyword">final</strong> String TEST_TSO_LEASE_PATH = <span class="jxr_string">"/test_wronginfo_tsolease"</span>;
-<a class="jxr_linenumber" name="331" href="#331">331</a>         <strong class="jxr_keyword">final</strong> String TEST_CURRENT_TSO_PATH = <span class="jxr_string">"/test_wronginfo_currenttso"</span>;
-<a class="jxr_linenumber" name="332" href="#332">332</a> 
-<a class="jxr_linenumber" name="333" href="#333">333</a>         Panicker panicker = spy(<strong class="jxr_keyword">new</strong> MockPanicker());
-<a class="jxr_linenumber" name="334" href="#334">334</a> 
-<a class="jxr_linenumber" name="335" href="#335">335</a>         <em class="jxr_comment">// Launch the master instance...</em>
-<a class="jxr_linenumber" name="336" href="#336">336</a>         TSOStateManager stateManager1 = mock(TSOStateManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="337" href="#337">337</a>         when(stateManager1.initialize()).thenReturn(<strong class="jxr_keyword">new</strong> TSOState(DUMMY_LOW_WATERMARK_1, DUMMY_EPOCH_1));
-<a class="jxr_linenumber" name="338" href="#338">338</a>         <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a> leaseManager = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a>(LEASE_MGR_ID_1,
-<a class="jxr_linenumber" name="339" href="#339">339</a>                                                                      mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="340" href="#340">340</a>                                                                      stateManager1,
-<a class="jxr_linenumber" name="341" href="#341">341</a>                                                                      TEST_LEASE_PERIOD_IN_MS,
-<a class="jxr_linenumber" name="342" href="#342">342</a>                                                                      TEST_TSO_LEASE_PATH,
-<a class="jxr_linenumber" name="343" href="#343">343</a>                                                                      TEST_CURRENT_TSO_PATH,
-<a class="jxr_linenumber" name="344" href="#344">344</a>                                                                      zkClient,
-<a class="jxr_linenumber" name="345" href="#345">345</a>                                                                      panicker);
-<a class="jxr_linenumber" name="346" href="#346">346</a> 
-<a class="jxr_linenumber" name="347" href="#347">347</a>         leaseManager.startService();
-<a class="jxr_linenumber" name="348" href="#348">348</a>         <em class="jxr_comment">// ...and let the test run for some time...</em>
-<a class="jxr_linenumber" name="349" href="#349">349</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="350" href="#350">350</a> 
-<a class="jxr_linenumber" name="351" href="#351">351</a>         leaseManager.pausedInTryToRenewLeasePeriod();
-<a class="jxr_linenumber" name="352" href="#352">352</a> 
-<a class="jxr_linenumber" name="353" href="#353">353</a>         <em class="jxr_comment">// 1st Panic test) Inject corrupted data in the ZNode, force reelection and test the panicker is exercised</em>
-<a class="jxr_linenumber" name="354" href="#354">354</a>         zkClient.setData().forPath(TEST_CURRENT_TSO_PATH, <span class="jxr_string">"CorruptedData!!!"</span>.getBytes());
-<a class="jxr_linenumber" name="355" href="#355">355</a> 
-<a class="jxr_linenumber" name="356" href="#356">356</a>         <em class="jxr_comment">// ...and let the test run for some time...</em>
-<a class="jxr_linenumber" name="357" href="#357">357</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="358" href="#358">358</a>         leaseManager.resume();
-<a class="jxr_linenumber" name="359" href="#359">359</a>         <em class="jxr_comment">// ...and let the test run for some time...</em>
-<a class="jxr_linenumber" name="360" href="#360">360</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="361" href="#361">361</a> 
-<a class="jxr_linenumber" name="362" href="#362">362</a>         ArgumentCaptor&lt;IllegalArgumentException&gt; trowableIAE = ArgumentCaptor.forClass(IllegalArgumentException.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="363" href="#363">363</a>         verify(panicker, times(2)).panic(anyString(), trowableIAE.capture());
-<a class="jxr_linenumber" name="364" href="#364">364</a>         assertTrue(trowableIAE.getValue() instanceof IllegalArgumentException);
-<a class="jxr_linenumber" name="365" href="#365">365</a>         assertTrue(trowableIAE.getValue().getMessage().contains(<span class="jxr_string">"Incorrect TSO Info found"</span>));
-<a class="jxr_linenumber" name="366" href="#366">366</a> 
-<a class="jxr_linenumber" name="367" href="#367">367</a>         <em class="jxr_comment">// 2nd Panic test) Simulate that a new master appeared in the meantime, force reelection</em>
-<a class="jxr_linenumber" name="368" href="#368">368</a>         <em class="jxr_comment">// and test the panicker is exercised</em>
-<a class="jxr_linenumber" name="369" href="#369">369</a>         reset(panicker);
-<a class="jxr_linenumber" name="370" href="#370">370</a>         zkClient.setData().forPath(TEST_CURRENT_TSO_PATH, <span class="jxr_string">"newTSO:12345#10000"</span>.getBytes());
-<a class="jxr_linenumber" name="371" href="#371">371</a> 
-<a class="jxr_linenumber" name="372" href="#372">372</a>         leaseManager.pausedInTryToRenewLeasePeriod();
-<a class="jxr_linenumber" name="373" href="#373">373</a> 
-<a class="jxr_linenumber" name="374" href="#374">374</a>         <em class="jxr_comment">// ...and let the test run for some time...</em>
-<a class="jxr_linenumber" name="375" href="#375">375</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="376" href="#376">376</a>         leaseManager.resume();
-<a class="jxr_linenumber" name="377" href="#377">377</a>         <em class="jxr_comment">// ...and let the test run for some time...</em>
-<a class="jxr_linenumber" name="378" href="#378">378</a>         Thread.sleep(TEST_LEASE_PERIOD_IN_MS * 2);
-<a class="jxr_linenumber" name="379" href="#379">379</a> 
-<a class="jxr_linenumber" name="380" href="#380">380</a>         ArgumentCaptor&lt;LeaseManagement.LeaseManagementException&gt; trowableLME =
-<a class="jxr_linenumber" name="381" href="#381">381</a>                 ArgumentCaptor.forClass(LeaseManagement.LeaseManagementException.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="382" href="#382">382</a>         verify(panicker, times(2)).panic(anyString(), trowableLME.capture());
-<a class="jxr_linenumber" name="383" href="#383">383</a>         assertTrue(trowableLME.getValue() instanceof LeaseManagement.LeaseManagementException);
-<a class="jxr_linenumber" name="384" href="#384">384</a>         assertTrue(trowableLME.getValue().getMessage().contains(<span class="jxr_string">"Another TSO replica was found"</span>));
-<a class="jxr_linenumber" name="385" href="#385">385</a>     }
-<a class="jxr_linenumber" name="386" href="#386">386</a> 
-<a class="jxr_linenumber" name="387" href="#387">387</a>     @Test(timeOut = 1000)
-<a class="jxr_linenumber" name="388" href="#388">388</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testNonHALeaseManager() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="389" href="#389">389</a> 
-<a class="jxr_linenumber" name="390" href="#390">390</a>         <em class="jxr_comment">// Launch the instance...</em>
-<a class="jxr_linenumber" name="391" href="#391">391</a>         VoidLeaseManager leaseManager = <strong class="jxr_keyword">new</strong> VoidLeaseManager(mock(TSOChannelHandler.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="392" href="#392">392</a>                                                              mock(TSOStateManager.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="393" href="#393">393</a> 
-<a class="jxr_linenumber" name="394" href="#394">394</a>         leaseManager.startService();
-<a class="jxr_linenumber" name="395" href="#395">395</a>         assertTrue(leaseManager.stillInLeasePeriod());
-<a class="jxr_linenumber" name="396" href="#396">396</a>         leaseManager.stopService();
-<a class="jxr_linenumber" name="397" href="#397">397</a> 
-<a class="jxr_linenumber" name="398" href="#398">398</a>     }
-<a class="jxr_linenumber" name="399" href="#399">399</a> 
-<a class="jxr_linenumber" name="400" href="#400">400</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="401" href="#401">401</a>     <em class="jxr_comment">// Checkers</em>
-<a class="jxr_linenumber" name="402" href="#402">402</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="403" href="#403">403</a> 
-<a class="jxr_linenumber" name="404" href="#404">404</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkLeaseHolder(String tsoLeasePath, String expectedLeaseHolder) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="405" href="#405">405</a>         byte[] leaseHolderInBytes = zkClient.getData().forPath(tsoLeasePath);
-<a class="jxr_linenumber" name="406" href="#406">406</a>         String leaseHolder = <strong class="jxr_keyword">new</strong> String(leaseHolderInBytes, Charsets.UTF_8);
-<a class="jxr_linenumber" name="407" href="#407">407</a> 
-<a class="jxr_linenumber" name="408" href="#408">408</a>         assertEquals(leaseHolder, expectedLeaseHolder);
-<a class="jxr_linenumber" name="409" href="#409">409</a>     }
-<a class="jxr_linenumber" name="410" href="#410">410</a> 
-<a class="jxr_linenumber" name="411" href="#411">411</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword

<TRUNCATED>


[37/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestFilters.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestFilters.html b/xref-test/org/apache/omid/transaction/TestFilters.html
index 2edc667..e9a5362 100644
--- a/xref-test/org/apache/omid/transaction/TestFilters.html
+++ b/xref-test/org/apache/omid/transaction/TestFilters.html
@@ -27,182 +27,183 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.BinaryComparator;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.ColumnPrefixFilter;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.CompareFilter;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.ValueFilter;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * Tests to verify that Get and Scan filters still work with transactions tables</em>
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="49" href="#49">49</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestFilters.html">TestFilters</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
-<a class="jxr_linenumber" name="51" href="#51">51</a>  
-<a class="jxr_linenumber" name="52" href="#52">52</a>      byte[] family = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> byte[] row2 = Bytes.toBytes(<span class="jxr_string">"row2"</span>);
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> byte[] row3 = Bytes.toBytes(<span class="jxr_string">"row3"</span>);
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> byte[] prefix = Bytes.toBytes(<span class="jxr_string">"foo"</span>);
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> byte[] col1 = Bytes.toBytes(<span class="jxr_string">"foobar"</span>);
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> byte[] col2 = Bytes.toBytes(<span class="jxr_string">"boofar"</span>);
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>      @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetWithColumnPrefixFilter(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="62" href="#62">62</a>          testGet(context, <strong class="jxr_keyword">new</strong> ColumnPrefixFilter(prefix));
-<a class="jxr_linenumber" name="63" href="#63">63</a>      }
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetWithValueFilter(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="67" href="#67">67</a>          testGet(context, <strong class="jxr_keyword">new</strong> ValueFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(col1)));
-<a class="jxr_linenumber" name="68" href="#68">68</a>      }
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testGet(ITestContext context, Filter f) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>          CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>          HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="75" href="#75">75</a>          hbaseOmidClientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
-<a class="jxr_linenumber" name="76" href="#76">76</a>          hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="79" href="#79">79</a>          PostCommitActions syncPostCommitter = spy(
-<a class="jxr_linenumber" name="80" href="#80">80</a>                  <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
-<a class="jxr_linenumber" name="81" href="#81">81</a>          AbstractTransactionManager tm = HBaseTransactionManager.builder(hbaseOmidClientConf)
-<a class="jxr_linenumber" name="82" href="#82">82</a>                  .commitTableClient(commitTableClient)
-<a class="jxr_linenumber" name="83" href="#83">83</a>                  .postCommitter(syncPostCommitter)
-<a class="jxr_linenumber" name="84" href="#84">84</a>                  .build();
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>          writeRows(table, tm, syncPostCommitter);
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>          Transaction t = tm.begin();
-<a class="jxr_linenumber" name="89" href="#89">89</a>          Get g = <strong class="jxr_keyword">new</strong> Get(row1);
-<a class="jxr_linenumber" name="90" href="#90">90</a>          g.setFilter(f);
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>          Result r = table.get(t, g);
-<a class="jxr_linenumber" name="93" href="#93">93</a>          assertEquals(r.getColumnCells(family, col1).size(), 1, <span class="jxr_string">"should exist in result"</span>);
-<a class="jxr_linenumber" name="94" href="#94">94</a>          assertEquals(r.getColumnCells(family, col2).size(), 0 , <span class="jxr_string">"shouldn't exist in result"</span>);
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          g = <strong class="jxr_keyword">new</strong> Get(row2);
-<a class="jxr_linenumber" name="97" href="#97">97</a>          g.setFilter(f);
-<a class="jxr_linenumber" name="98" href="#98">98</a>          r = table.get(t, g);
-<a class="jxr_linenumber" name="99" href="#99">99</a>          assertEquals(r.getColumnCells(family, col1).size(), 1, <span class="jxr_string">"should exist in result"</span>);
-<a class="jxr_linenumber" name="100" href="#100">100</a>         assertEquals(r.getColumnCells(family, col2).size(), 0, <span class="jxr_string">"shouldn't exist in result"</span>);
-<a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>         g = <strong class="jxr_keyword">new</strong> Get(row3);
-<a class="jxr_linenumber" name="103" href="#103">103</a>         g.setFilter(f);
-<a class="jxr_linenumber" name="104" href="#104">104</a>         r = table.get(t, g);
-<a class="jxr_linenumber" name="105" href="#105">105</a>         assertEquals(r.getColumnCells(family, col2).size(), 0, <span class="jxr_string">"shouldn't exist in result"</span>);
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>     }
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanWithColumnPrefixFilter(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="111" href="#111">111</a>         testScan(context, <strong class="jxr_keyword">new</strong> ColumnPrefixFilter(prefix));
-<a class="jxr_linenumber" name="112" href="#112">112</a>     }
-<a class="jxr_linenumber" name="113" href="#113">113</a> 
-<a class="jxr_linenumber" name="114" href="#114">114</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanWithValueFilter(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="116" href="#116">116</a>         testScan(context, <strong class="jxr_keyword">new</strong> ValueFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(col1)));
-<a class="jxr_linenumber" name="117" href="#117">117</a>     }
-<a class="jxr_linenumber" name="118" href="#118">118</a> 
-<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testScan(ITestContext context, Filter f) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="120" href="#120">120</a> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="124" href="#124">124</a>         hbaseOmidClientConf.getOmidClientConfiguration().setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
-<a class="jxr_linenumber" name="125" href="#125">125</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="126" href="#126">126</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="127" href="#127">127</a>         PostCommitActions syncPostCommitter = spy(
-<a class="jxr_linenumber" name="128" href="#128">128</a>                 <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
-<a class="jxr_linenumber" name="129" href="#129">129</a>         AbstractTransactionManager tm = HBaseTransactionManager.builder(hbaseOmidClientConf)
-<a class="jxr_linenumber" name="130" href="#130">130</a>                 .commitTableClient(commitTableClient)
-<a class="jxr_linenumber" name="131" href="#131">131</a>                 .postCommitter(syncPostCommitter)
-<a class="jxr_linenumber" name="132" href="#132">132</a>                 .build();
-<a class="jxr_linenumber" name="133" href="#133">133</a> 
-<a class="jxr_linenumber" name="134" href="#134">134</a>         writeRows(table, tm, syncPostCommitter);
-<a class="jxr_linenumber" name="135" href="#135">135</a> 
-<a class="jxr_linenumber" name="136" href="#136">136</a>         Transaction t = tm.begin();
-<a class="jxr_linenumber" name="137" href="#137">137</a>         Scan s = <strong class="jxr_keyword">new</strong> Scan().setFilter(f);
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>         ResultScanner rs = table.getScanner(t, s);
-<a class="jxr_linenumber" name="140" href="#140">140</a> 
-<a class="jxr_linenumber" name="141" href="#141">141</a>         Result r = rs.next();
-<a class="jxr_linenumber" name="142" href="#142">142</a>         assertEquals(r.getColumnCells(family, col1).size(), 1, <span class="jxr_string">"should exist in result"</span>);
-<a class="jxr_linenumber" name="143" href="#143">143</a>         assertEquals(r.getColumnCells(family, col2).size(), 0, <span class="jxr_string">"shouldn't exist in result"</span>);
-<a class="jxr_linenumber" name="144" href="#144">144</a> 
-<a class="jxr_linenumber" name="145" href="#145">145</a>         r = rs.next();
-<a class="jxr_linenumber" name="146" href="#146">146</a>         assertEquals(r.getColumnCells(family, col1).size(), 1, <span class="jxr_string">"should exist in result"</span>);
-<a class="jxr_linenumber" name="147" href="#147">147</a>         assertEquals(r.getColumnCells(family, col2).size(), 0, <span class="jxr_string">"shouldn't exist in result"</span>);
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>         r = rs.next();
-<a class="jxr_linenumber" name="150" href="#150">150</a>         assertNull(r, <span class="jxr_string">"Last row shouldn't exist"</span>);
-<a class="jxr_linenumber" name="151" href="#151">151</a> 
-<a class="jxr_linenumber" name="152" href="#152">152</a>     }
-<a class="jxr_linenumber" name="153" href="#153">153</a> 
-<a class="jxr_linenumber" name="154" href="#154">154</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeRows(TTable table, TransactionManager tm, PostCommitActions postCommitter)
-<a class="jxr_linenumber" name="155" href="#155">155</a>             <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="156" href="#156">156</a>         <em class="jxr_comment">// create normal row with both cells</em>
-<a class="jxr_linenumber" name="157" href="#157">157</a>         Transaction t = tm.begin();
-<a class="jxr_linenumber" name="158" href="#158">158</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="159" href="#159">159</a>         p.add(family, col1, col1);
-<a class="jxr_linenumber" name="160" href="#160">160</a>         p.add(family, col2, col2);
-<a class="jxr_linenumber" name="161" href="#161">161</a>         table.put(t, p);
-<a class="jxr_linenumber" name="162" href="#162">162</a>         tm.commit(t);
-<a class="jxr_linenumber" name="163" href="#163">163</a> 
-<a class="jxr_linenumber" name="164" href="#164">164</a>         <em class="jxr_comment">// create normal row, but fail to update shadow cells</em>
-<a class="jxr_linenumber" name="165" href="#165">165</a>         doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;ListenableFuture&lt;Void&gt;&gt;() {
-<a class="jxr_linenumber" name="166" href="#166">166</a>             <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; answer(InvocationOnMock invocation) {
-<a class="jxr_linenumber" name="167" href="#167">167</a>                 <em class="jxr_comment">// Do not invoke the real method</em>
-<a class="jxr_linenumber" name="168" href="#168">168</a>                 <strong class="jxr_keyword">return</strong> SettableFuture.create();
-<a class="jxr_linenumber" name="169" href="#169">169</a>             }
-<a class="jxr_linenumber" name="170" href="#170">170</a>         }).when(postCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>         t = tm.begin();
-<a class="jxr_linenumber" name="173" href="#173">173</a>         p = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="174" href="#174">174</a>         p.add(family, col1, col1);
-<a class="jxr_linenumber" name="175" href="#175">175</a>         p.add(family, col2, col2);
-<a class="jxr_linenumber" name="176" href="#176">176</a>         table.put(t, p);
-<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="178" href="#178">178</a>             tm.commit(t);
-<a class="jxr_linenumber" name="179" href="#179">179</a>         } <strong class="jxr_keyword">catch</strong> (TransactionException e) {
-<a class="jxr_linenumber" name="180" href="#180">180</a>             <em class="jxr_comment">// Expected, see comment above</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a>         }
-<a class="jxr_linenumber" name="182" href="#182">182</a> 
-<a class="jxr_linenumber" name="183" href="#183">183</a>         <em class="jxr_comment">// create normal row with only one cell</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a>         t = tm.begin();
-<a class="jxr_linenumber" name="185" href="#185">185</a>         p = <strong class="jxr_keyword">new</strong> Put(row3);
-<a class="jxr_linenumber" name="186" href="#186">186</a>         p.add(family, col2, col2);
-<a class="jxr_linenumber" name="187" href="#187">187</a>         table.put(t, p);
-<a class="jxr_linenumber" name="188" href="#188">188</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="189" href="#189">189</a>             tm.commit(t);
-<a class="jxr_linenumber" name="190" href="#190">190</a>         } <strong class="jxr_keyword">catch</strong> (TransactionException e) {
-<a class="jxr_linenumber" name="191" href="#191">191</a>             <em class="jxr_comment">// Expected, see comment above</em>
-<a class="jxr_linenumber" name="192" href="#192">192</a>         }
-<a class="jxr_linenumber" name="193" href="#193">193</a>     }
-<a class="jxr_linenumber" name="194" href="#194">194</a> 
-<a class="jxr_linenumber" name="195" href="#195">195</a> }
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.BinaryComparator;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.ColumnPrefixFilter;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.CompareFilter;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.ValueFilter;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * Tests to verify that Get and Scan filters still work with transactions tables</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestFilters.html">TestFilters</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>      byte[] family = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> byte[] row2 = Bytes.toBytes(<span class="jxr_string">"row2"</span>);
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> byte[] row3 = Bytes.toBytes(<span class="jxr_string">"row3"</span>);
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> byte[] prefix = Bytes.toBytes(<span class="jxr_string">"foo"</span>);
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> byte[] col1 = Bytes.toBytes(<span class="jxr_string">"foobar"</span>);
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> byte[] col2 = Bytes.toBytes(<span class="jxr_string">"boofar"</span>);
+<a class="jxr_linenumber" name="60" href="#60">60</a>  
+<a class="jxr_linenumber" name="61" href="#61">61</a>      @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetWithColumnPrefixFilter(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="63" href="#63">63</a>          testGet(context, <strong class="jxr_keyword">new</strong> ColumnPrefixFilter(prefix));
+<a class="jxr_linenumber" name="64" href="#64">64</a>      }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetWithValueFilter(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="68" href="#68">68</a>          testGet(context, <strong class="jxr_keyword">new</strong> ValueFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(col1)));
+<a class="jxr_linenumber" name="69" href="#69">69</a>      }
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testGet(ITestContext context, Filter f) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>          CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>          HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="76" href="#76">76</a>          hbaseOmidClientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="78" href="#78">78</a>  
+<a class="jxr_linenumber" name="79" href="#79">79</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="80" href="#80">80</a>          PostCommitActions syncPostCommitter = spy(
+<a class="jxr_linenumber" name="81" href="#81">81</a>                  <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
+<a class="jxr_linenumber" name="82" href="#82">82</a>          AbstractTransactionManager tm = HBaseTransactionManager.builder(hbaseOmidClientConf)
+<a class="jxr_linenumber" name="83" href="#83">83</a>                  .commitTableClient(commitTableClient)
+<a class="jxr_linenumber" name="84" href="#84">84</a>                  .postCommitter(syncPostCommitter)
+<a class="jxr_linenumber" name="85" href="#85">85</a>                  .build();
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>          writeRows(table, tm, syncPostCommitter);
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>          Transaction t = tm.begin();
+<a class="jxr_linenumber" name="90" href="#90">90</a>          Get g = <strong class="jxr_keyword">new</strong> Get(row1);
+<a class="jxr_linenumber" name="91" href="#91">91</a>          g.setFilter(f);
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>          Result r = table.get(t, g);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          assertEquals(r.getColumnCells(family, col1).size(), 1, <span class="jxr_string">"should exist in result"</span>);
+<a class="jxr_linenumber" name="95" href="#95">95</a>          assertEquals(r.getColumnCells(family, col2).size(), 0 , <span class="jxr_string">"shouldn't exist in result"</span>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>          g = <strong class="jxr_keyword">new</strong> Get(row2);
+<a class="jxr_linenumber" name="98" href="#98">98</a>          g.setFilter(f);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          r = table.get(t, g);
+<a class="jxr_linenumber" name="100" href="#100">100</a>         assertEquals(r.getColumnCells(family, col1).size(), 1, <span class="jxr_string">"should exist in result"</span>);
+<a class="jxr_linenumber" name="101" href="#101">101</a>         assertEquals(r.getColumnCells(family, col2).size(), 0, <span class="jxr_string">"shouldn't exist in result"</span>);
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>         g = <strong class="jxr_keyword">new</strong> Get(row3);
+<a class="jxr_linenumber" name="104" href="#104">104</a>         g.setFilter(f);
+<a class="jxr_linenumber" name="105" href="#105">105</a>         r = table.get(t, g);
+<a class="jxr_linenumber" name="106" href="#106">106</a>         assertEquals(r.getColumnCells(family, col2).size(), 0, <span class="jxr_string">"shouldn't exist in result"</span>);
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>     }
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanWithColumnPrefixFilter(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="112" href="#112">112</a>         testScan(context, <strong class="jxr_keyword">new</strong> ColumnPrefixFilter(prefix));
+<a class="jxr_linenumber" name="113" href="#113">113</a>     }
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanWithValueFilter(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="117" href="#117">117</a>         testScan(context, <strong class="jxr_keyword">new</strong> ValueFilter(CompareFilter.CompareOp.EQUAL, <strong class="jxr_keyword">new</strong> BinaryComparator(col1)));
+<a class="jxr_linenumber" name="118" href="#118">118</a>     }
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testScan(ITestContext context, Filter f) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
+<a class="jxr_linenumber" name="123" href="#123">123</a> 
+<a class="jxr_linenumber" name="124" href="#124">124</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="125" href="#125">125</a>         hbaseOmidClientConf.getOmidClientConfiguration().setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
+<a class="jxr_linenumber" name="126" href="#126">126</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="127" href="#127">127</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="128" href="#128">128</a>         PostCommitActions syncPostCommitter = spy(
+<a class="jxr_linenumber" name="129" href="#129">129</a>                 <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
+<a class="jxr_linenumber" name="130" href="#130">130</a>         AbstractTransactionManager tm = HBaseTransactionManager.builder(hbaseOmidClientConf)
+<a class="jxr_linenumber" name="131" href="#131">131</a>                 .commitTableClient(commitTableClient)
+<a class="jxr_linenumber" name="132" href="#132">132</a>                 .postCommitter(syncPostCommitter)
+<a class="jxr_linenumber" name="133" href="#133">133</a>                 .build();
+<a class="jxr_linenumber" name="134" href="#134">134</a> 
+<a class="jxr_linenumber" name="135" href="#135">135</a>         writeRows(table, tm, syncPostCommitter);
+<a class="jxr_linenumber" name="136" href="#136">136</a> 
+<a class="jxr_linenumber" name="137" href="#137">137</a>         Transaction t = tm.begin();
+<a class="jxr_linenumber" name="138" href="#138">138</a>         Scan s = <strong class="jxr_keyword">new</strong> Scan().setFilter(f);
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>         ResultScanner rs = table.getScanner(t, s);
+<a class="jxr_linenumber" name="141" href="#141">141</a> 
+<a class="jxr_linenumber" name="142" href="#142">142</a>         Result r = rs.next();
+<a class="jxr_linenumber" name="143" href="#143">143</a>         assertEquals(r.getColumnCells(family, col1).size(), 1, <span class="jxr_string">"should exist in result"</span>);
+<a class="jxr_linenumber" name="144" href="#144">144</a>         assertEquals(r.getColumnCells(family, col2).size(), 0, <span class="jxr_string">"shouldn't exist in result"</span>);
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>         r = rs.next();
+<a class="jxr_linenumber" name="147" href="#147">147</a>         assertEquals(r.getColumnCells(family, col1).size(), 1, <span class="jxr_string">"should exist in result"</span>);
+<a class="jxr_linenumber" name="148" href="#148">148</a>         assertEquals(r.getColumnCells(family, col2).size(), 0, <span class="jxr_string">"shouldn't exist in result"</span>);
+<a class="jxr_linenumber" name="149" href="#149">149</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>         r = rs.next();
+<a class="jxr_linenumber" name="151" href="#151">151</a>         assertNull(r, <span class="jxr_string">"Last row shouldn't exist"</span>);
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>     }
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeRows(TTable table, TransactionManager tm, PostCommitActions postCommitter)
+<a class="jxr_linenumber" name="156" href="#156">156</a>             <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="157" href="#157">157</a>         <em class="jxr_comment">// create normal row with both cells</em>
+<a class="jxr_linenumber" name="158" href="#158">158</a>         Transaction t = tm.begin();
+<a class="jxr_linenumber" name="159" href="#159">159</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="160" href="#160">160</a>         p.addColumn(family, col1, col1);
+<a class="jxr_linenumber" name="161" href="#161">161</a>         p.addColumn(family, col2, col2);
+<a class="jxr_linenumber" name="162" href="#162">162</a>         table.put(t, p);
+<a class="jxr_linenumber" name="163" href="#163">163</a>         tm.commit(t);
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>         <em class="jxr_comment">// create normal row, but fail to update shadow cells</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a>         doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;ListenableFuture&lt;Void&gt;&gt;() {
+<a class="jxr_linenumber" name="167" href="#167">167</a>             <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; answer(InvocationOnMock invocation) {
+<a class="jxr_linenumber" name="168" href="#168">168</a>                 <em class="jxr_comment">// Do not invoke the real method</em>
+<a class="jxr_linenumber" name="169" href="#169">169</a>                 <strong class="jxr_keyword">return</strong> SettableFuture.create();
+<a class="jxr_linenumber" name="170" href="#170">170</a>             }
+<a class="jxr_linenumber" name="171" href="#171">171</a>         }).when(postCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="172" href="#172">172</a> 
+<a class="jxr_linenumber" name="173" href="#173">173</a>         t = tm.begin();
+<a class="jxr_linenumber" name="174" href="#174">174</a>         p = <strong class="jxr_keyword">new</strong> Put(row2);
+<a class="jxr_linenumber" name="175" href="#175">175</a>         p.addColumn(family, col1, col1);
+<a class="jxr_linenumber" name="176" href="#176">176</a>         p.addColumn(family, col2, col2);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         table.put(t, p);
+<a class="jxr_linenumber" name="178" href="#178">178</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="179" href="#179">179</a>             tm.commit(t);
+<a class="jxr_linenumber" name="180" href="#180">180</a>         } <strong class="jxr_keyword">catch</strong> (TransactionException e) {
+<a class="jxr_linenumber" name="181" href="#181">181</a>             <em class="jxr_comment">// Expected, see comment above</em>
+<a class="jxr_linenumber" name="182" href="#182">182</a>         }
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <em class="jxr_comment">// create normal row with only one cell</em>
+<a class="jxr_linenumber" name="185" href="#185">185</a>         t = tm.begin();
+<a class="jxr_linenumber" name="186" href="#186">186</a>         p = <strong class="jxr_keyword">new</strong> Put(row3);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         p.addColumn(family, col2, col2);
+<a class="jxr_linenumber" name="188" href="#188">188</a>         table.put(t, p);
+<a class="jxr_linenumber" name="189" href="#189">189</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="190" href="#190">190</a>             tm.commit(t);
+<a class="jxr_linenumber" name="191" href="#191">191</a>         } <strong class="jxr_keyword">catch</strong> (TransactionException e) {
+<a class="jxr_linenumber" name="192" href="#192">192</a>             <em class="jxr_comment">// Expected, see comment above</em>
+<a class="jxr_linenumber" name="193" href="#193">193</a>         }
+<a class="jxr_linenumber" name="194" href="#194">194</a>     }
+<a class="jxr_linenumber" name="195" href="#195">195</a> 
+<a class="jxr_linenumber" name="196" href="#196">196</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>



[05/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/TableAccessWrapper.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/TableAccessWrapper.html b/xref/org/apache/omid/transaction/TableAccessWrapper.html
new file mode 100644
index 0000000..a3df2b5
--- /dev/null
+++ b/xref/org/apache/omid/transaction/TableAccessWrapper.html
@@ -0,0 +1,52 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TableAccessWrapper xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/TableAccessWrapper.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_comment">//This interface is used to wrap the HTableInterface and Region object when doing client and server side filtering accordingly.</em>
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">interface</strong> <a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> {
+<a class="jxr_linenumber" name="33" href="#33">33</a>  
+<a class="jxr_linenumber" name="34" href="#34">34</a>      <strong class="jxr_keyword">public</strong> Result[] get(List&lt;Get&gt; get) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">public</strong> Result get(Get get) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong>   put(Put put) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">public</strong> ResultScanner getScanner(Scan scan) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/Transaction.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/Transaction.html b/xref/org/apache/omid/transaction/Transaction.html
index 2d93a3e..af52584 100644
--- a/xref/org/apache/omid/transaction/Transaction.html
+++ b/xref/org/apache/omid/transaction/Transaction.html
@@ -57,36 +57,49 @@
 <a class="jxr_linenumber" name="47" href="#47">47</a>      <a href="../../../../org/apache/omid/transaction/Transaction.html">Status</a> getStatus();
 <a class="jxr_linenumber" name="48" href="#48">48</a>  
 <a class="jxr_linenumber" name="49" href="#49">49</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * Forces the transaction to rollback, even when there's an intention</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     * to commit it.</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * Returns the read timestamp for this transaction.</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     * @return read timestamp</em>
 <a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">void</strong> setRollbackOnly();
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">long</strong> getReadTimestamp();
 <a class="jxr_linenumber" name="54" href="#54">54</a>  
 <a class="jxr_linenumber" name="55" href="#55">55</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment">     * Returns whether the transaction was marked for rollback or not</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment">     * @return whether the transaction is marked for rollback or not</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment">     * Returns the write timestamp for this transaction.</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment">     * @return write timestamp</em>
 <a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">boolean</strong> isRollbackOnly();
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">long</strong> getWriteTimestamp();
 <a class="jxr_linenumber" name="61" href="#61">61</a>  
 <a class="jxr_linenumber" name="62" href="#62">62</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment">     * Set of methods to attach some metadata to a transaction object. One example</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">     * of such metadata are notifications</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment">     * Expects they metadata stored under key "key" to be of the "Set" type,</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     * append "value" to the existing set or creates a new one</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     * @param key a key, like in hashtable</em>
-<a class="jxr_linenumber" name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * @param value a value to associate with the given key</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment">     * Forces the transaction to rollback, even when there's an intention</em>
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">     * to commit it.</em>
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">void</strong> setRollbackOnly();
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     * Returns whether the transaction was marked for rollback or not</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * @return whether the transaction is marked for rollback or not</em>
 <a class="jxr_linenumber" name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">void</strong> appendMetadata(String key, Object value);
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">boolean</strong> isRollbackOnly();
 <a class="jxr_linenumber" name="73" href="#73">73</a>  
 <a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">void</strong> setMetadata(String key, Object value);
-<a class="jxr_linenumber" name="76" href="#76">76</a>  
-<a class="jxr_linenumber" name="77" href="#77">77</a>      Optional&lt;Object&gt; getMetadata(String key);
-<a class="jxr_linenumber" name="78" href="#78">78</a>  }
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>  <em class="jxr_javadoccomment">     * Set of methods to attach some metadata to a transaction object. One example</em>
+<a class="jxr_linenumber" name="77" href="#77">77</a>  <em class="jxr_javadoccomment">     * of such metadata are notifications</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>  <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>  <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="80" href="#80">80</a>  <em class="jxr_javadoccomment">     * Expects they metadata stored under key "key" to be of the "Set" type,</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * append "value" to the existing set or creates a new one</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     * @param key a key, like in hashtable</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * @param value a value to associate with the given key</em>
+<a class="jxr_linenumber" name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">void</strong> appendMetadata(String key, Object value);
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">void</strong> setMetadata(String key, Object value);
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>      Optional&lt;Object&gt; getMetadata(String key);
+<a class="jxr_linenumber" name="91" href="#91">91</a>  }
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/TransactionFilters.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/TransactionFilters.html b/xref/org/apache/omid/transaction/TransactionFilters.html
new file mode 100644
index 0000000..b638bee
--- /dev/null
+++ b/xref/org/apache/omid/transaction/TransactionFilters.html
@@ -0,0 +1,45 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TransactionFilters xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/TransactionFilters.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TransactionFilters.html">TransactionFilters</a> {
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Filter getVisibilityFilter(Filter cellFilter,
+<a class="jxr_linenumber" name="27" href="#27">27</a>                                               <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> regionAccessWrapper,
+<a class="jxr_linenumber" name="28" href="#28">28</a>                                               <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hbaseTransaction) {
+<a class="jxr_linenumber" name="29" href="#29">29</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/CellSkipFilterBase.html">CellSkipFilterBase</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionVisibilityFilterBase.html">TransactionVisibilityFilterBase</a>(cellFilter, regionAccessWrapper, hbaseTransaction));
+<a class="jxr_linenumber" name="30" href="#30">30</a>      }
+<a class="jxr_linenumber" name="31" href="#31">31</a>  }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/TransactionManager.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/TransactionManager.html b/xref/org/apache/omid/transaction/TransactionManager.html
index c49fa7a..9e65336 100644
--- a/xref/org/apache/omid/transaction/TransactionManager.html
+++ b/xref/org/apache/omid/transaction/TransactionManager.html
@@ -68,7 +68,18 @@
 <a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">void</strong> rollback(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx) <strong class="jxr_keyword">throws</strong> TransactionException;
 <a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>  }
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">    * Creates a fence</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment">    *</em>
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">    * Creates a fence and returns a {@link Transaction} interface implementation that contains the fence information.</em>
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment">    *</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment">    * @param tableName name of the table that requires a fence</em>
+<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment">    * @return transaction representation contains the fence timestamp as the TransactionId.</em>
+<a class="jxr_linenumber" name="68" href="#68">68</a>  <em class="jxr_javadoccomment">    * @throws TransactionException in case of any issues</em>
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <em class="jxr_javadoccomment">    */</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> fence(byte[] tableName) <strong class="jxr_keyword">throws</strong> TransactionException;
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/TransactionVisibilityFilter.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/TransactionVisibilityFilter.html b/xref/org/apache/omid/transaction/TransactionVisibilityFilter.html
new file mode 100644
index 0000000..362c927
--- /dev/null
+++ b/xref/org/apache/omid/transaction/TransactionVisibilityFilter.html
@@ -0,0 +1,259 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TransactionVisibilityFilter xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/TransactionVisibilityFilter.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.FilterBase;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.io.ImmutableBytesWritable;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TransactionVisibilityFilter.html">TransactionVisibilityFilter</a> <strong class="jxr_keyword">extends</strong> FilterBase {
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <em class="jxr_comment">// optional sub-filter to apply to visible cells</em>
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Filter userFilter;
+<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter;
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;Long ,Long&gt; commitCache;
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hbaseTransaction;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <em class="jxr_comment">// This cache is cleared when moving to the next row</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <em class="jxr_comment">// So no need to keep row name</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;ImmutableBytesWritable, Long&gt; familyDeletionCache;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TransactionVisibilityFilter.html">TransactionVisibilityFilter</a>(Filter cellFilter,
+<a class="jxr_linenumber" name="51" href="#51">51</a>                                         <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter,
+<a class="jxr_linenumber" name="52" href="#52">52</a>                                         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hbaseTransaction) {
+<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">this</strong>.userFilter = cellFilter;
+<a class="jxr_linenumber" name="54" href="#54">54</a>          <strong class="jxr_keyword">this</strong>.snapshotFilter = snapshotFilter;
+<a class="jxr_linenumber" name="55" href="#55">55</a>          commitCache = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
+<a class="jxr_linenumber" name="56" href="#56">56</a>          <strong class="jxr_keyword">this</strong>.hbaseTransaction = hbaseTransaction;
+<a class="jxr_linenumber" name="57" href="#57">57</a>          familyDeletionCache = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
+<a class="jxr_linenumber" name="58" href="#58">58</a>      }
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>      @Override
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">public</strong> ReturnCode filterKeyValue(Cell v) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="62" href="#62">62</a>          <strong class="jxr_keyword">if</strong> (CellUtils.isShadowCell(v)) {
+<a class="jxr_linenumber" name="63" href="#63">63</a>              Long commitTs =  Bytes.toLong(CellUtil.cloneValue(v));
+<a class="jxr_linenumber" name="64" href="#64">64</a>              commitCache.put(v.getTimestamp(), commitTs);
+<a class="jxr_linenumber" name="65" href="#65">65</a>              <em class="jxr_comment">// Continue getting shadow cells until one of them fits this transaction</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>              <strong class="jxr_keyword">if</strong> (hbaseTransaction.getStartTimestamp() &gt;= commitTs) {
+<a class="jxr_linenumber" name="67" href="#67">67</a>                  <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="68" href="#68">68</a>              } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="69" href="#69">69</a>                  <strong class="jxr_keyword">return</strong> ReturnCode.SKIP;
+<a class="jxr_linenumber" name="70" href="#70">70</a>              }
+<a class="jxr_linenumber" name="71" href="#71">71</a>          }
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>          Optional&lt;Long&gt; ct = getCommitIfInSnapshot(v, CellUtils.isFamilyDeleteCell(v));
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">if</strong> (ct.isPresent()) {
+<a class="jxr_linenumber" name="75" href="#75">75</a>              commitCache.put(v.getTimestamp(), ct.get());
+<a class="jxr_linenumber" name="76" href="#76">76</a>              <strong class="jxr_keyword">if</strong> (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL &amp;&amp;
+<a class="jxr_linenumber" name="77" href="#77">77</a>                      snapshotFilter.getTSIfInTransaction(v, hbaseTransaction).isPresent()) {
+<a class="jxr_linenumber" name="78" href="#78">78</a>                  <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE);
+<a class="jxr_linenumber" name="79" href="#79">79</a>              }
+<a class="jxr_linenumber" name="80" href="#80">80</a>              <strong class="jxr_keyword">if</strong> (CellUtils.isFamilyDeleteCell(v)) {
+<a class="jxr_linenumber" name="81" href="#81">81</a>                  familyDeletionCache.put(createImmutableBytesWritable(v), ct.get());
+<a class="jxr_linenumber" name="82" href="#82">82</a>                  <strong class="jxr_keyword">if</strong> (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="83" href="#83">83</a>                      <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
+<a class="jxr_linenumber" name="84" href="#84">84</a>                  } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="85" href="#85">85</a>                      <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="86" href="#86">86</a>                  }
+<a class="jxr_linenumber" name="87" href="#87">87</a>              }
+<a class="jxr_linenumber" name="88" href="#88">88</a>              Long deleteCommit = familyDeletionCache.get(createImmutableBytesWritable(v));
+<a class="jxr_linenumber" name="89" href="#89">89</a>              <strong class="jxr_keyword">if</strong> (deleteCommit != <strong class="jxr_keyword">null</strong> &amp;&amp; deleteCommit &gt;= v.getTimestamp()) {
+<a class="jxr_linenumber" name="90" href="#90">90</a>                  <strong class="jxr_keyword">if</strong> (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="91" href="#91">91</a>                      <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
+<a class="jxr_linenumber" name="92" href="#92">92</a>                  } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="93" href="#93">93</a>                      <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="94" href="#94">94</a>                  }
+<a class="jxr_linenumber" name="95" href="#95">95</a>              }
+<a class="jxr_linenumber" name="96" href="#96">96</a>              <strong class="jxr_keyword">if</strong> (CellUtils.isTombstone(v)) {
+<a class="jxr_linenumber" name="97" href="#97">97</a>                  <strong class="jxr_keyword">if</strong> (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="98" href="#98">98</a>                      <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
+<a class="jxr_linenumber" name="99" href="#99">99</a>                  } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="100" href="#100">100</a>                     <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="101" href="#101">101</a>                 }
+<a class="jxr_linenumber" name="102" href="#102">102</a>             }
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>             <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
+<a class="jxr_linenumber" name="105" href="#105">105</a>         }
+<a class="jxr_linenumber" name="106" href="#106">106</a> 
+<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">return</strong> ReturnCode.SKIP;
+<a class="jxr_linenumber" name="108" href="#108">108</a>     }
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a> 
+<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">private</strong> ImmutableBytesWritable createImmutableBytesWritable(Cell v) {
+<a class="jxr_linenumber" name="112" href="#112">112</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> ImmutableBytesWritable(v.getFamilyArray(),
+<a class="jxr_linenumber" name="113" href="#113">113</a>                 v.getFamilyOffset(),v.getFamilyLength());
+<a class="jxr_linenumber" name="114" href="#114">114</a>     }
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">private</strong> ReturnCode runUserFilter(Cell v, ReturnCode snapshotReturn)
+<a class="jxr_linenumber" name="117" href="#117">117</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="118" href="#118">118</a>         assert(snapshotReturn == ReturnCode.INCLUDE_AND_NEXT_COL || snapshotReturn == ReturnCode.INCLUDE);
+<a class="jxr_linenumber" name="119" href="#119">119</a>         <strong class="jxr_keyword">if</strong> (userFilter == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="120" href="#120">120</a>             <strong class="jxr_keyword">return</strong> snapshotReturn;
+<a class="jxr_linenumber" name="121" href="#121">121</a>         }
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>         ReturnCode userRes = userFilter.filterKeyValue(v);
+<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">switch</strong> (userRes) {
+<a class="jxr_linenumber" name="125" href="#125">125</a>             <strong class="jxr_keyword">case</strong> INCLUDE:
+<a class="jxr_linenumber" name="126" href="#126">126</a>                 <strong class="jxr_keyword">return</strong> snapshotReturn;
+<a class="jxr_linenumber" name="127" href="#127">127</a>             <strong class="jxr_keyword">case</strong> SKIP:
+<a class="jxr_linenumber" name="128" href="#128">128</a>                 <strong class="jxr_keyword">return</strong> (snapshotReturn == ReturnCode.INCLUDE) ? ReturnCode.SKIP: ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="129" href="#129">129</a>             <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="130" href="#130">130</a>                 <strong class="jxr_keyword">return</strong> userRes;
+<a class="jxr_linenumber" name="131" href="#131">131</a>         }
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>     }
+<a class="jxr_linenumber" name="134" href="#134">134</a> 
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <em class="jxr_comment">// For family delete cells, the sc hasn't arrived yet so get sc from region before going to ct</em>
+<a class="jxr_linenumber" name="136" href="#136">136</a>     <strong class="jxr_keyword">private</strong> Optional&lt;Long&gt; getCommitIfInSnapshot(Cell v, <strong class="jxr_keyword">boolean</strong> getShadowCellBeforeCT) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="137" href="#137">137</a>         Long cachedCommitTS = commitCache.get(v.getTimestamp());
+<a class="jxr_linenumber" name="138" href="#138">138</a>         <strong class="jxr_keyword">if</strong> (cachedCommitTS != <strong class="jxr_keyword">null</strong> &amp;&amp; hbaseTransaction.getStartTimestamp() &gt;= cachedCommitTS) {
+<a class="jxr_linenumber" name="139" href="#139">139</a>             <strong class="jxr_keyword">return</strong> Optional.of(cachedCommitTS);
+<a class="jxr_linenumber" name="140" href="#140">140</a>         }
+<a class="jxr_linenumber" name="141" href="#141">141</a>         <strong class="jxr_keyword">if</strong> (snapshotFilter.getTSIfInTransaction(v, hbaseTransaction).isPresent()) {
+<a class="jxr_linenumber" name="142" href="#142">142</a>             <strong class="jxr_keyword">return</strong> Optional.of(v.getTimestamp());
+<a class="jxr_linenumber" name="143" href="#143">143</a>         }
+<a class="jxr_linenumber" name="144" href="#144">144</a> 
+<a class="jxr_linenumber" name="145" href="#145">145</a>         <strong class="jxr_keyword">if</strong> (getShadowCellBeforeCT) {
+<a class="jxr_linenumber" name="146" href="#146">146</a> 
+<a class="jxr_linenumber" name="147" href="#147">147</a>             <em class="jxr_comment">// Try to get shadow cell from region</em>
+<a class="jxr_linenumber" name="148" href="#148">148</a>             <strong class="jxr_keyword">final</strong> Get get = <strong class="jxr_keyword">new</strong> Get(CellUtil.cloneRow(v));
+<a class="jxr_linenumber" name="149" href="#149">149</a>             get.setTimeStamp(v.getTimestamp()).setMaxVersions(1);
+<a class="jxr_linenumber" name="150" href="#150">150</a>             get.addColumn(CellUtil.cloneFamily(v), CellUtils.addShadowCellSuffixPrefix(CellUtils.FAMILY_DELETE_QUALIFIER));
+<a class="jxr_linenumber" name="151" href="#151">151</a>             Result shadowCell = snapshotFilter.getTableAccessWrapper().get(get);
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>             <strong class="jxr_keyword">if</strong> (!shadowCell.isEmpty()) {
+<a class="jxr_linenumber" name="154" href="#154">154</a>                 <strong class="jxr_keyword">long</strong> commitTS = Bytes.toLong(CellUtil.cloneValue(shadowCell.rawCells()[0]));
+<a class="jxr_linenumber" name="155" href="#155">155</a>                 <strong class="jxr_keyword">if</strong> (commitTS &lt;= hbaseTransaction.getStartTimestamp()) {
+<a class="jxr_linenumber" name="156" href="#156">156</a>                     <strong class="jxr_keyword">return</strong> Optional.of(commitTS);
+<a class="jxr_linenumber" name="157" href="#157">157</a>                 }
+<a class="jxr_linenumber" name="158" href="#158">158</a>             }
+<a class="jxr_linenumber" name="159" href="#159">159</a>         }
+<a class="jxr_linenumber" name="160" href="#160">160</a> 
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">return</strong> snapshotFilter.getTSIfInSnapshot(v, hbaseTransaction, commitCache);
+<a class="jxr_linenumber" name="162" href="#162">162</a>     }
+<a class="jxr_linenumber" name="163" href="#163">163</a> 
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>     @Override
+<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reset() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="167" href="#167">167</a>         commitCache.clear();
+<a class="jxr_linenumber" name="168" href="#168">168</a>         familyDeletionCache.clear();
+<a class="jxr_linenumber" name="169" href="#169">169</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="170" href="#170">170</a>             userFilter.reset();
+<a class="jxr_linenumber" name="171" href="#171">171</a>         }
+<a class="jxr_linenumber" name="172" href="#172">172</a>     }
+<a class="jxr_linenumber" name="173" href="#173">173</a> 
+<a class="jxr_linenumber" name="174" href="#174">174</a>     @Override
+<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterRow() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="176" href="#176">176</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="177" href="#177">177</a>             <strong class="jxr_keyword">return</strong> userFilter.filterRow();
+<a class="jxr_linenumber" name="178" href="#178">178</a>         }
+<a class="jxr_linenumber" name="179" href="#179">179</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.filterRow();
+<a class="jxr_linenumber" name="180" href="#180">180</a>     }
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a> 
+<a class="jxr_linenumber" name="183" href="#183">183</a>     @Override
+<a class="jxr_linenumber" name="184" href="#184">184</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterRowKey(byte[] buffer, <strong class="jxr_keyword">int</strong> offset, <strong class="jxr_keyword">int</strong> length) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="186" href="#186">186</a>             <strong class="jxr_keyword">return</strong> userFilter.filterRowKey(buffer, offset, length);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         }
+<a class="jxr_linenumber" name="188" href="#188">188</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.filterRowKey(buffer, offset, length);
+<a class="jxr_linenumber" name="189" href="#189">189</a>     }
+<a class="jxr_linenumber" name="190" href="#190">190</a> 
+<a class="jxr_linenumber" name="191" href="#191">191</a>     @Override
+<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterAllRemaining() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="193" href="#193">193</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="194" href="#194">194</a>             <strong class="jxr_keyword">return</strong> userFilter.filterAllRemaining();
+<a class="jxr_linenumber" name="195" href="#195">195</a>         }
+<a class="jxr_linenumber" name="196" href="#196">196</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.filterAllRemaining();
+<a class="jxr_linenumber" name="197" href="#197">197</a>     }
+<a class="jxr_linenumber" name="198" href="#198">198</a> 
+<a class="jxr_linenumber" name="199" href="#199">199</a>     @Override
+<a class="jxr_linenumber" name="200" href="#200">200</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> filterRowCells(List&lt;Cell&gt; kvs) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="201" href="#201">201</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="202" href="#202">202</a>             userFilter.filterRowCells(kvs);
+<a class="jxr_linenumber" name="203" href="#203">203</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="204" href="#204">204</a>             <strong class="jxr_keyword">super</strong>.filterRowCells(kvs);
+<a class="jxr_linenumber" name="205" href="#205">205</a>         }
+<a class="jxr_linenumber" name="206" href="#206">206</a>     }
+<a class="jxr_linenumber" name="207" href="#207">207</a> 
+<a class="jxr_linenumber" name="208" href="#208">208</a>     @Override
+<a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasFilterRow() {
+<a class="jxr_linenumber" name="210" href="#210">210</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="211" href="#211">211</a>             <strong class="jxr_keyword">return</strong> userFilter.hasFilterRow();
+<a class="jxr_linenumber" name="212" href="#212">212</a>         }
+<a class="jxr_linenumber" name="213" href="#213">213</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.hasFilterRow();
+<a class="jxr_linenumber" name="214" href="#214">214</a>     }
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a> 
+<a class="jxr_linenumber" name="217" href="#217">217</a>     @Override
+<a class="jxr_linenumber" name="218" href="#218">218</a>     <strong class="jxr_keyword">public</strong> KeyValue getNextKeyHint(KeyValue currentKV) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="220" href="#220">220</a>             <strong class="jxr_keyword">return</strong> userFilter.getNextKeyHint(currentKV);
+<a class="jxr_linenumber" name="221" href="#221">221</a>         }
+<a class="jxr_linenumber" name="222" href="#222">222</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.getNextKeyHint(currentKV);
+<a class="jxr_linenumber" name="223" href="#223">223</a>     }
+<a class="jxr_linenumber" name="224" href="#224">224</a> 
+<a class="jxr_linenumber" name="225" href="#225">225</a>     @Override
+<a class="jxr_linenumber" name="226" href="#226">226</a>     <strong class="jxr_keyword">public</strong> Cell getNextCellHint(Cell currentKV) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="227" href="#227">227</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="228" href="#228">228</a>             <strong class="jxr_keyword">return</strong> userFilter.getNextCellHint(currentKV);
+<a class="jxr_linenumber" name="229" href="#229">229</a>         }
+<a class="jxr_linenumber" name="230" href="#230">230</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.getNextCellHint(currentKV);
+<a class="jxr_linenumber" name="231" href="#231">231</a>     }
+<a class="jxr_linenumber" name="232" href="#232">232</a> 
+<a class="jxr_linenumber" name="233" href="#233">233</a>     @Override
+<a class="jxr_linenumber" name="234" href="#234">234</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isFamilyEssential(byte[] name) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="235" href="#235">235</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="236" href="#236">236</a>             <strong class="jxr_keyword">return</strong> userFilter.isFamilyEssential(name);
+<a class="jxr_linenumber" name="237" href="#237">237</a>         }
+<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.isFamilyEssential(name);
+<a class="jxr_linenumber" name="239" href="#239">239</a>     }
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>     @Override
+<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">public</strong> byte[] toByteArray() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="243" href="#243">243</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.toByteArray();
+<a class="jxr_linenumber" name="244" href="#244">244</a>     }
+<a class="jxr_linenumber" name="245" href="#245">245</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/TransactionVisibilityFilterBase.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/TransactionVisibilityFilterBase.html b/xref/org/apache/omid/transaction/TransactionVisibilityFilterBase.html
new file mode 100644
index 0000000..a585136
--- /dev/null
+++ b/xref/org/apache/omid/transaction/TransactionVisibilityFilterBase.html
@@ -0,0 +1,253 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TransactionVisibilityFilterBase xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/TransactionVisibilityFilterBase.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.io.ImmutableBytesWritable;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.OmidFilterBase;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TransactionVisibilityFilterBase.html">TransactionVisibilityFilterBase</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/OmidFilterBase.html">OmidFilterBase</a> {
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <em class="jxr_comment">// optional sub-filter to apply to visible cells</em>
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Filter userFilter;
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter;
+<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;Long ,Long&gt; commitCache;
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hbaseTransaction;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <em class="jxr_comment">// This cache is cleared when moving to the next row</em>
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <em class="jxr_comment">// So no need to keep row name</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;ImmutableBytesWritable, Long&gt; familyDeletionCache;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TransactionVisibilityFilterBase.html">TransactionVisibilityFilterBase</a>(Filter cellFilter,
+<a class="jxr_linenumber" name="50" href="#50">50</a>                                             <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter,
+<a class="jxr_linenumber" name="51" href="#51">51</a>                                             <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hbaseTransaction) {
+<a class="jxr_linenumber" name="52" href="#52">52</a>          <strong class="jxr_keyword">this</strong>.userFilter = cellFilter;
+<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">this</strong>.snapshotFilter = snapshotFilter;
+<a class="jxr_linenumber" name="54" href="#54">54</a>          commitCache = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
+<a class="jxr_linenumber" name="55" href="#55">55</a>          <strong class="jxr_keyword">this</strong>.hbaseTransaction = hbaseTransaction;
+<a class="jxr_linenumber" name="56" href="#56">56</a>          familyDeletionCache = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
+<a class="jxr_linenumber" name="57" href="#57">57</a>      }
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>      @Override
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> ReturnCode filterKeyValue(Cell v) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">if</strong> (CellUtils.isShadowCell(v)) {
+<a class="jxr_linenumber" name="62" href="#62">62</a>              Long commitTs =  Bytes.toLong(CellUtil.cloneValue(v));
+<a class="jxr_linenumber" name="63" href="#63">63</a>              commitCache.put(v.getTimestamp(), commitTs);
+<a class="jxr_linenumber" name="64" href="#64">64</a>              <em class="jxr_comment">// Continue getting shadow cells until one of them fits this transaction</em>
+<a class="jxr_linenumber" name="65" href="#65">65</a>              <strong class="jxr_keyword">if</strong> (hbaseTransaction.getStartTimestamp() &gt;= commitTs) {
+<a class="jxr_linenumber" name="66" href="#66">66</a>                  <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="67" href="#67">67</a>              } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="68" href="#68">68</a>                  <strong class="jxr_keyword">return</strong> ReturnCode.SKIP;
+<a class="jxr_linenumber" name="69" href="#69">69</a>              }
+<a class="jxr_linenumber" name="70" href="#70">70</a>          }
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>          Optional&lt;Long&gt; ct = getCommitIfInSnapshot(v, CellUtils.isFamilyDeleteCell(v));
+<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">if</strong> (ct.isPresent()) {
+<a class="jxr_linenumber" name="74" href="#74">74</a>              commitCache.put(v.getTimestamp(), ct.get());
+<a class="jxr_linenumber" name="75" href="#75">75</a>              <strong class="jxr_keyword">if</strong> (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL &amp;&amp;
+<a class="jxr_linenumber" name="76" href="#76">76</a>                      snapshotFilter.getTSIfInTransaction(v, hbaseTransaction).isPresent()) {
+<a class="jxr_linenumber" name="77" href="#77">77</a>                  <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE);
+<a class="jxr_linenumber" name="78" href="#78">78</a>              }
+<a class="jxr_linenumber" name="79" href="#79">79</a>              <strong class="jxr_keyword">if</strong> (CellUtils.isFamilyDeleteCell(v)) {
+<a class="jxr_linenumber" name="80" href="#80">80</a>                  familyDeletionCache.put(createImmutableBytesWritable(v), ct.get());
+<a class="jxr_linenumber" name="81" href="#81">81</a>                  <strong class="jxr_keyword">if</strong> (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="82" href="#82">82</a>                      <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
+<a class="jxr_linenumber" name="83" href="#83">83</a>                  } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="84" href="#84">84</a>                      <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="85" href="#85">85</a>                  }
+<a class="jxr_linenumber" name="86" href="#86">86</a>              }
+<a class="jxr_linenumber" name="87" href="#87">87</a>              Long deleteCommit = familyDeletionCache.get(createImmutableBytesWritable(v));
+<a class="jxr_linenumber" name="88" href="#88">88</a>              <strong class="jxr_keyword">if</strong> (deleteCommit != <strong class="jxr_keyword">null</strong> &amp;&amp; deleteCommit &gt;= v.getTimestamp()) {
+<a class="jxr_linenumber" name="89" href="#89">89</a>                  <strong class="jxr_keyword">if</strong> (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="90" href="#90">90</a>                      <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
+<a class="jxr_linenumber" name="91" href="#91">91</a>                  } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="92" href="#92">92</a>                      <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="93" href="#93">93</a>                  }
+<a class="jxr_linenumber" name="94" href="#94">94</a>              }
+<a class="jxr_linenumber" name="95" href="#95">95</a>              <strong class="jxr_keyword">if</strong> (CellUtils.isTombstone(v)) {
+<a class="jxr_linenumber" name="96" href="#96">96</a>                  <strong class="jxr_keyword">if</strong> (hbaseTransaction.getVisibilityLevel() == AbstractTransaction.VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="97" href="#97">97</a>                      <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
+<a class="jxr_linenumber" name="98" href="#98">98</a>                  } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="99" href="#99">99</a>                      <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="100" href="#100">100</a>                 }
+<a class="jxr_linenumber" name="101" href="#101">101</a>             }
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>             <strong class="jxr_keyword">return</strong> runUserFilter(v, ReturnCode.INCLUDE_AND_NEXT_COL);
+<a class="jxr_linenumber" name="104" href="#104">104</a>         }
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">return</strong> ReturnCode.SKIP;
+<a class="jxr_linenumber" name="107" href="#107">107</a>     }
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">private</strong> ImmutableBytesWritable createImmutableBytesWritable(Cell v) {
+<a class="jxr_linenumber" name="111" href="#111">111</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> ImmutableBytesWritable(v.getFamilyArray(),
+<a class="jxr_linenumber" name="112" href="#112">112</a>                 v.getFamilyOffset(),v.getFamilyLength());
+<a class="jxr_linenumber" name="113" href="#113">113</a>     }
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">private</strong> ReturnCode runUserFilter(Cell v, ReturnCode snapshotReturn)
+<a class="jxr_linenumber" name="116" href="#116">116</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="117" href="#117">117</a>         assert(snapshotReturn == ReturnCode.INCLUDE_AND_NEXT_COL || snapshotReturn == ReturnCode.INCLUDE);
+<a class="jxr_linenumber" name="118" href="#118">118</a>         <strong class="jxr_keyword">if</strong> (userFilter == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="119" href="#119">119</a>             <strong class="jxr_keyword">return</strong> snapshotReturn;
+<a class="jxr_linenumber" name="120" href="#120">120</a>         }
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>         ReturnCode userRes = userFilter.filterKeyValue(v);
+<a class="jxr_linenumber" name="123" href="#123">123</a>         <strong class="jxr_keyword">switch</strong> (userRes) {
+<a class="jxr_linenumber" name="124" href="#124">124</a>             <strong class="jxr_keyword">case</strong> INCLUDE:
+<a class="jxr_linenumber" name="125" href="#125">125</a>                 <strong class="jxr_keyword">return</strong> snapshotReturn;
+<a class="jxr_linenumber" name="126" href="#126">126</a>             <strong class="jxr_keyword">case</strong> SKIP:
+<a class="jxr_linenumber" name="127" href="#127">127</a>                 <strong class="jxr_keyword">return</strong> (snapshotReturn == ReturnCode.INCLUDE) ? ReturnCode.SKIP: ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="128" href="#128">128</a>             <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="129" href="#129">129</a>                 <strong class="jxr_keyword">return</strong> userRes;
+<a class="jxr_linenumber" name="130" href="#130">130</a>         }
+<a class="jxr_linenumber" name="131" href="#131">131</a> 
+<a class="jxr_linenumber" name="132" href="#132">132</a>     }
+<a class="jxr_linenumber" name="133" href="#133">133</a> 
+<a class="jxr_linenumber" name="134" href="#134">134</a>     <em class="jxr_comment">// For family delete cells, the sc hasn't arrived yet so get sc from region before going to ct</em>
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">private</strong> Optional&lt;Long&gt; getCommitIfInSnapshot(Cell v, <strong class="jxr_keyword">boolean</strong> getShadowCellBeforeCT) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="136" href="#136">136</a>         Long cachedCommitTS = commitCache.get(v.getTimestamp());
+<a class="jxr_linenumber" name="137" href="#137">137</a>         <strong class="jxr_keyword">if</strong> (cachedCommitTS != <strong class="jxr_keyword">null</strong> &amp;&amp; hbaseTransaction.getStartTimestamp() &gt;= cachedCommitTS) {
+<a class="jxr_linenumber" name="138" href="#138">138</a>             <strong class="jxr_keyword">return</strong> Optional.of(cachedCommitTS);
+<a class="jxr_linenumber" name="139" href="#139">139</a>         }
+<a class="jxr_linenumber" name="140" href="#140">140</a>         <strong class="jxr_keyword">if</strong> (snapshotFilter.getTSIfInTransaction(v, hbaseTransaction).isPresent()) {
+<a class="jxr_linenumber" name="141" href="#141">141</a>             <strong class="jxr_keyword">return</strong> Optional.of(v.getTimestamp());
+<a class="jxr_linenumber" name="142" href="#142">142</a>         }
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>         <strong class="jxr_keyword">if</strong> (getShadowCellBeforeCT) {
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>             <em class="jxr_comment">// Try to get shadow cell from region</em>
+<a class="jxr_linenumber" name="147" href="#147">147</a>             <strong class="jxr_keyword">final</strong> Get get = <strong class="jxr_keyword">new</strong> Get(CellUtil.cloneRow(v));
+<a class="jxr_linenumber" name="148" href="#148">148</a>             get.setTimeStamp(v.getTimestamp()).setMaxVersions(1);
+<a class="jxr_linenumber" name="149" href="#149">149</a>             get.addColumn(CellUtil.cloneFamily(v), CellUtils.addShadowCellSuffixPrefix(CellUtils.FAMILY_DELETE_QUALIFIER));
+<a class="jxr_linenumber" name="150" href="#150">150</a>             Result shadowCell = snapshotFilter.getTableAccessWrapper().get(get);
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>             <strong class="jxr_keyword">if</strong> (!shadowCell.isEmpty()) {
+<a class="jxr_linenumber" name="153" href="#153">153</a>                 <strong class="jxr_keyword">long</strong> commitTS = Bytes.toLong(CellUtil.cloneValue(shadowCell.rawCells()[0]));
+<a class="jxr_linenumber" name="154" href="#154">154</a>                 <strong class="jxr_keyword">if</strong> (commitTS &lt;= hbaseTransaction.getStartTimestamp()) {
+<a class="jxr_linenumber" name="155" href="#155">155</a>                     <strong class="jxr_keyword">return</strong> Optional.of(commitTS);
+<a class="jxr_linenumber" name="156" href="#156">156</a>                 }
+<a class="jxr_linenumber" name="157" href="#157">157</a>             }
+<a class="jxr_linenumber" name="158" href="#158">158</a>         }
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">return</strong> snapshotFilter.getTSIfInSnapshot(v, hbaseTransaction, commitCache);
+<a class="jxr_linenumber" name="161" href="#161">161</a>     }
+<a class="jxr_linenumber" name="162" href="#162">162</a> 
+<a class="jxr_linenumber" name="163" href="#163">163</a> 
+<a class="jxr_linenumber" name="164" href="#164">164</a>     @Override
+<a class="jxr_linenumber" name="165" href="#165">165</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reset() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="166" href="#166">166</a>         commitCache.clear();
+<a class="jxr_linenumber" name="167" href="#167">167</a>         familyDeletionCache.clear();
+<a class="jxr_linenumber" name="168" href="#168">168</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="169" href="#169">169</a>             userFilter.reset();
+<a class="jxr_linenumber" name="170" href="#170">170</a>         }
+<a class="jxr_linenumber" name="171" href="#171">171</a>     }
+<a class="jxr_linenumber" name="172" href="#172">172</a> 
+<a class="jxr_linenumber" name="173" href="#173">173</a>     @Override
+<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterRow() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="175" href="#175">175</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="176" href="#176">176</a>             <strong class="jxr_keyword">return</strong> userFilter.filterRow();
+<a class="jxr_linenumber" name="177" href="#177">177</a>         }
+<a class="jxr_linenumber" name="178" href="#178">178</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.filterRow();
+<a class="jxr_linenumber" name="179" href="#179">179</a>     }
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>     @Override
+<a class="jxr_linenumber" name="183" href="#183">183</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterRowKey(byte[] buffer, <strong class="jxr_keyword">int</strong> offset, <strong class="jxr_keyword">int</strong> length) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="185" href="#185">185</a>             <strong class="jxr_keyword">return</strong> userFilter.filterRowKey(buffer, offset, length);
+<a class="jxr_linenumber" name="186" href="#186">186</a>         }
+<a class="jxr_linenumber" name="187" href="#187">187</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.filterRowKey(buffer, offset, length);
+<a class="jxr_linenumber" name="188" href="#188">188</a>     }
+<a class="jxr_linenumber" name="189" href="#189">189</a> 
+<a class="jxr_linenumber" name="190" href="#190">190</a>     @Override
+<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterAllRemaining() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="193" href="#193">193</a>             <strong class="jxr_keyword">return</strong> userFilter.filterAllRemaining();
+<a class="jxr_linenumber" name="194" href="#194">194</a>         }
+<a class="jxr_linenumber" name="195" href="#195">195</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.filterAllRemaining();
+<a class="jxr_linenumber" name="196" href="#196">196</a>     }
+<a class="jxr_linenumber" name="197" href="#197">197</a> 
+<a class="jxr_linenumber" name="198" href="#198">198</a>     @Override
+<a class="jxr_linenumber" name="199" href="#199">199</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> filterRowCells(List&lt;Cell&gt; kvs) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="200" href="#200">200</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="201" href="#201">201</a>             userFilter.filterRowCells(kvs);
+<a class="jxr_linenumber" name="202" href="#202">202</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="203" href="#203">203</a>             <strong class="jxr_keyword">super</strong>.filterRowCells(kvs);
+<a class="jxr_linenumber" name="204" href="#204">204</a>         }
+<a class="jxr_linenumber" name="205" href="#205">205</a>     }
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>     @Override
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasFilterRow() {
+<a class="jxr_linenumber" name="209" href="#209">209</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="210" href="#210">210</a>             <strong class="jxr_keyword">return</strong> userFilter.hasFilterRow();
+<a class="jxr_linenumber" name="211" href="#211">211</a>         }
+<a class="jxr_linenumber" name="212" href="#212">212</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.hasFilterRow();
+<a class="jxr_linenumber" name="213" href="#213">213</a>     }
+<a class="jxr_linenumber" name="214" href="#214">214</a> 
+<a class="jxr_linenumber" name="215" href="#215">215</a>     @Override
+<a class="jxr_linenumber" name="216" href="#216">216</a>     <strong class="jxr_keyword">public</strong> Cell getNextCellHint(Cell currentKV) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="217" href="#217">217</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="218" href="#218">218</a>             <strong class="jxr_keyword">return</strong> userFilter.getNextCellHint(currentKV);
+<a class="jxr_linenumber" name="219" href="#219">219</a>         }
+<a class="jxr_linenumber" name="220" href="#220">220</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.getNextCellHint(currentKV);
+<a class="jxr_linenumber" name="221" href="#221">221</a>     }
+<a class="jxr_linenumber" name="222" href="#222">222</a> 
+<a class="jxr_linenumber" name="223" href="#223">223</a>     @Override
+<a class="jxr_linenumber" name="224" href="#224">224</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isFamilyEssential(byte[] name) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="225" href="#225">225</a>         <strong class="jxr_keyword">if</strong> (userFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="226" href="#226">226</a>             <strong class="jxr_keyword">return</strong> userFilter.isFamilyEssential(name);
+<a class="jxr_linenumber" name="227" href="#227">227</a>         }
+<a class="jxr_linenumber" name="228" href="#228">228</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.isFamilyEssential(name);
+<a class="jxr_linenumber" name="229" href="#229">229</a>     }
+<a class="jxr_linenumber" name="230" href="#230">230</a> 
+<a class="jxr_linenumber" name="231" href="#231">231</a>     @Override
+<a class="jxr_linenumber" name="232" href="#232">232</a>     <strong class="jxr_keyword">public</strong> byte[] toByteArray() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="233" href="#233">233</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.toByteArray();
+<a class="jxr_linenumber" name="234" href="#234">234</a>     }
+<a class="jxr_linenumber" name="235" href="#235">235</a> 
+<a class="jxr_linenumber" name="236" href="#236">236</a>     <strong class="jxr_keyword">public</strong> Filter getInnerFilter() {
+<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">return</strong> userFilter;
+<a class="jxr_linenumber" name="238" href="#238">238</a>     }
+<a class="jxr_linenumber" name="239" href="#239">239</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+


[06/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/TTable.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/TTable.html b/xref/org/apache/omid/transaction/TTable.html
index 864f848..8adcb93 100644
--- a/xref/org/apache/omid/transaction/TTable.html
+++ b/xref/org/apache/omid/transaction/TTable.html
@@ -27,808 +27,675 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Function;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Predicate;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.ImmutableList;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Iterables;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Multimaps;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HConstants;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValueUtil;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTable;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTableInterface;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Mutation;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.io.TimeRange;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager.CommitTimestampLocatorImpl;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> java.io.Closeable;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> java.util.Iterator;
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> java.util.Map.Entry;
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> java.util.NavigableMap;
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> java.util.NavigableSet;
-<a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * Provides transactional methods for accessing and modifying a given snapshot of data identified by an opaque {@link</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> * Transaction} object. It mimics the behavior in {@link org.apache.hadoop.hbase.client.HTableInterface}</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> <strong class="jxr_keyword">implements</strong> Closeable {
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Logger LOG = LoggerFactory.getLogger(TTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> HTableInterface healerTable;
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">private</strong> HTableInterface table;
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <em class="jxr_comment">// Construction</em>
-<a class="jxr_linenumber" name="78" href="#78">78</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Configuration conf, byte[] tableName) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">this</strong>(<strong class="jxr_keyword">new</strong> HTable(conf, tableName));
-<a class="jxr_linenumber" name="82" href="#82">82</a>      }
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(String tableName) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">this</strong>(HBaseConfiguration.create(), Bytes.toBytes(tableName));
-<a class="jxr_linenumber" name="86" href="#86">86</a>      }
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Configuration conf, String tableName) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="89" href="#89">89</a>          <strong class="jxr_keyword">this</strong>(conf, Bytes.toBytes(tableName));
-<a class="jxr_linenumber" name="90" href="#90">90</a>      }
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(HTableInterface hTable) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="93" href="#93">93</a>          table = hTable;
-<a class="jxr_linenumber" name="94" href="#94">94</a>          healerTable = <strong class="jxr_keyword">new</strong> HTable(table.getConfiguration(), table.getTableName());
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.Closeable;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Map.Entry;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.NavigableMap;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.NavigableSet;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HConstants;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValueUtil;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Mutation;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.OperationWithAttributes;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.io.TimeRange;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConflictDetectionLevel;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> com.google.common.annotations.VisibleForTesting;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * Provides transactional methods for accessing and modifying a given snapshot of data identified by an opaque {@link</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> * Transaction} object. It mimics the behavior in {@link org.apache.hadoop.hbase.client.Table}</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> <strong class="jxr_keyword">implements</strong> Closeable {
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Logger LOG = LoggerFactory.getLogger(TTable.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="66" href="#66">66</a>  
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> Table table;
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilter.html">SnapshotFilter</a> snapshotFilter;
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> serverSideFilter;
+<a class="jxr_linenumber" name="72" href="#72">72</a>      
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;Mutation&gt; mutations;
+<a class="jxr_linenumber" name="74" href="#74">74</a>      
+<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> autoFlush = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="76" href="#76">76</a>      
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>      <em class="jxr_comment">// Construction</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Connection connection, byte[] tableName) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">this</strong>(connection.getTable(TableName.valueOf(tableName)));
+<a class="jxr_linenumber" name="83" href="#83">83</a>      }
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Connection connection, byte[] tableName, CommitTable.Client commitTableClient) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">this</strong>(connection.getTable(TableName.valueOf(tableName)), commitTableClient);
+<a class="jxr_linenumber" name="87" href="#87">87</a>      }
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Connection connection, String tableName) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="90" href="#90">90</a>          <strong class="jxr_keyword">this</strong>(connection.getTable(TableName.valueOf(tableName)));
+<a class="jxr_linenumber" name="91" href="#91">91</a>      }
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Connection connection, String tableName, CommitTable.Client commitTableClient) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">this</strong>(connection.getTable(TableName.valueOf(tableName)), commitTableClient);
 <a class="jxr_linenumber" name="95" href="#95">95</a>      }
 <a class="jxr_linenumber" name="96" href="#96">96</a>  
-<a class="jxr_linenumber" name="97" href="#97">97</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(HTableInterface hTable, HTableInterface healerTable) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="98" href="#98">98</a>          table = hTable;
-<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">this</strong>.healerTable = healerTable;
-<a class="jxr_linenumber" name="100" href="#100">100</a>     }
-<a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="103" href="#103">103</a>     <em class="jxr_comment">// Closeable implementation</em>
-<a class="jxr_linenumber" name="104" href="#104">104</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="107" href="#107">107</a> <em class="jxr_javadoccomment">     * Releases any resources held or pending changes in internal buffers.</em>
-<a class="jxr_linenumber" name="108" href="#108">108</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="109" href="#109">109</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="111" href="#111">111</a>     @Override
-<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="113" href="#113">113</a>         table.close();
-<a class="jxr_linenumber" name="114" href="#114">114</a>         healerTable.close();
-<a class="jxr_linenumber" name="115" href="#115">115</a>     }
-<a class="jxr_linenumber" name="116" href="#116">116</a> 
-<a class="jxr_linenumber" name="117" href="#117">117</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <em class="jxr_comment">// Transactional operations</em>
-<a class="jxr_linenumber" name="119" href="#119">119</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="120" href="#120">120</a> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a> <em class="jxr_javadoccomment">     * Transactional version of {@link HTableInterface#get(Get get)}</em>
-<a class="jxr_linenumber" name="123" href="#123">123</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="124" href="#124">124</a> <em class="jxr_javadoccomment">     * @param get an instance of Get</em>
-<a class="jxr_linenumber" name="125" href="#125">125</a> <em class="jxr_javadoccomment">     * @param tx  an instance of transaction to be used</em>
-<a class="jxr_linenumber" name="126" href="#126">126</a> <em class="jxr_javadoccomment">     * @return Result an instance of Result</em>
-<a class="jxr_linenumber" name="127" href="#127">127</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
-<a class="jxr_linenumber" name="128" href="#128">128</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">public</strong> Result get(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx, <strong class="jxr_keyword">final</strong> Get get) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="130" href="#130">130</a> 
-<a class="jxr_linenumber" name="131" href="#131">131</a>         throwExceptionIfOpSetsTimerange(get);
-<a class="jxr_linenumber" name="132" href="#132">132</a> 
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction = enforceHBaseTransactionAsParam(tx);
-<a class="jxr_linenumber" name="134" href="#134">134</a> 
-<a class="jxr_linenumber" name="135" href="#135">135</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> readTimestamp = transaction.getStartTimestamp();
-<a class="jxr_linenumber" name="136" href="#136">136</a>         <strong class="jxr_keyword">final</strong> Get tsget = <strong class="jxr_keyword">new</strong> Get(get.getRow()).setFilter(get.getFilter());
-<a class="jxr_linenumber" name="137" href="#137">137</a>         TimeRange timeRange = get.getTimeRange();
-<a class="jxr_linenumber" name="138" href="#138">138</a>         <strong class="jxr_keyword">long</strong> startTime = timeRange.getMin();
-<a class="jxr_linenumber" name="139" href="#139">139</a>         <strong class="jxr_keyword">long</strong> endTime = Math.min(timeRange.getMax(), readTimestamp + 1);
-<a class="jxr_linenumber" name="140" href="#140">140</a>         tsget.setTimeRange(startTime, endTime).setMaxVersions(1);
-<a class="jxr_linenumber" name="141" href="#141">141</a>         Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; kvs = get.getFamilyMap();
-<a class="jxr_linenumber" name="142" href="#142">142</a>         <strong class="jxr_keyword">for</strong> (Map.Entry&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; entry : kvs.entrySet()) {
-<a class="jxr_linenumber" name="143" href="#143">143</a>             byte[] family = entry.getKey();
-<a class="jxr_linenumber" name="144" href="#144">144</a>             NavigableSet&lt;byte[]&gt; qualifiers = entry.getValue();
-<a class="jxr_linenumber" name="145" href="#145">145</a>             <strong class="jxr_keyword">if</strong> (qualifiers == <strong class="jxr_keyword">null</strong> || qualifiers.isEmpty()) {
-<a class="jxr_linenumber" name="146" href="#146">146</a>                 tsget.addFamily(family);
-<a class="jxr_linenumber" name="147" href="#147">147</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="148" href="#148">148</a>                 <strong class="jxr_keyword">for</strong> (byte[] qualifier : qualifiers) {
-<a class="jxr_linenumber" name="149" href="#149">149</a>                     tsget.addColumn(family, qualifier);
-<a class="jxr_linenumber" name="150" href="#150">150</a>                     tsget.addColumn(family, CellUtils.addShadowCellSuffix(qualifier));
-<a class="jxr_linenumber" name="151" href="#151">151</a>                 }
-<a class="jxr_linenumber" name="152" href="#152">152</a>             }
-<a class="jxr_linenumber" name="153" href="#153">153</a>         }
-<a class="jxr_linenumber" name="154" href="#154">154</a>         LOG.trace(<span class="jxr_string">"Initial Get = {}"</span>, tsget);
-<a class="jxr_linenumber" name="155" href="#155">155</a> 
-<a class="jxr_linenumber" name="156" href="#156">156</a>         <em class="jxr_comment">// Return the KVs that belong to the transaction snapshot, ask for more</em>
-<a class="jxr_linenumber" name="157" href="#157">157</a>         <em class="jxr_comment">// versions if needed</em>
-<a class="jxr_linenumber" name="158" href="#158">158</a>         Result result = table.get(tsget);
-<a class="jxr_linenumber" name="159" href="#159">159</a>         List&lt;Cell&gt; filteredKeyValues = Collections.emptyList();
-<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">if</strong> (!result.isEmpty()) {
-<a class="jxr_linenumber" name="161" href="#161">161</a>             filteredKeyValues = filterCellsForSnapshot(result.listCells(), transaction, tsget.getMaxVersions());
-<a class="jxr_linenumber" name="162" href="#162">162</a>         }
-<a class="jxr_linenumber" name="163" href="#163">163</a> 
-<a class="jxr_linenumber" name="164" href="#164">164</a>         <strong class="jxr_keyword">return</strong> Result.create(filteredKeyValues);
-<a class="jxr_linenumber" name="165" href="#165">165</a>     }
-<a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="168" href="#168">168</a> <em class="jxr_javadoccomment">     * Transactional version of {@link HTableInterface#delete(Delete delete)}</em>
-<a class="jxr_linenumber" name="169" href="#169">169</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="170" href="#170">170</a> <em class="jxr_javadoccomment">     * @param delete an instance of Delete</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a> <em class="jxr_javadoccomment">     * @param tx     an instance of transaction to be used</em>
-<a class="jxr_linenumber" name="172" href="#172">172</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
-<a class="jxr_linenumber" name="173" href="#173">173</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> delete(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx, Delete delete) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>         throwExceptionIfOpSetsTimerange(delete);
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction = enforceHBaseTransactionAsParam(tx);
-<a class="jxr_linenumber" name="179" href="#179">179</a> 
-<a class="jxr_linenumber" name="180" href="#180">180</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> startTimestamp = transaction.getStartTimestamp();
-<a class="jxr_linenumber" name="181" href="#181">181</a>         <strong class="jxr_keyword">boolean</strong> issueGet = false;
-<a class="jxr_linenumber" name="182" href="#182">182</a> 
-<a class="jxr_linenumber" name="183" href="#183">183</a>         <strong class="jxr_keyword">final</strong> Put deleteP = <strong class="jxr_keyword">new</strong> Put(delete.getRow(), startTimestamp);
-<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">final</strong> Get deleteG = <strong class="jxr_keyword">new</strong> Get(delete.getRow());
-<a class="jxr_linenumber" name="185" href="#185">185</a>         Map&lt;byte[], List&lt;Cell&gt;&gt; fmap = delete.getFamilyCellMap();
-<a class="jxr_linenumber" name="186" href="#186">186</a>         <strong class="jxr_keyword">if</strong> (fmap.isEmpty()) {
-<a class="jxr_linenumber" name="187" href="#187">187</a>             issueGet = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="188" href="#188">188</a>         }
-<a class="jxr_linenumber" name="189" href="#189">189</a>         <strong class="jxr_keyword">for</strong> (List&lt;Cell&gt; cells : fmap.values()) {
-<a class="jxr_linenumber" name="190" href="#190">190</a>             <strong class="jxr_keyword">for</strong> (Cell cell : cells) {
-<a class="jxr_linenumber" name="191" href="#191">191</a>                 CellUtils.validateCell(cell, startTimestamp);
-<a class="jxr_linenumber" name="192" href="#192">192</a>                 <strong class="jxr_keyword">switch</strong> (KeyValue.Type.codeToType(cell.getTypeByte())) {
-<a class="jxr_linenumber" name="193" href="#193">193</a>                     <strong class="jxr_keyword">case</strong> DeleteColumn:
-<a class="jxr_linenumber" name="194" href="#194">194</a>                         deleteP.add(CellUtil.cloneFamily(cell),
-<a class="jxr_linenumber" name="195" href="#195">195</a>                                     CellUtil.cloneQualifier(cell),
-<a class="jxr_linenumber" name="196" href="#196">196</a>                                     startTimestamp,
-<a class="jxr_linenumber" name="197" href="#197">197</a>                                     CellUtils.DELETE_TOMBSTONE);
-<a class="jxr_linenumber" name="198" href="#198">198</a>                         transaction.addWriteSetElement(
-<a class="jxr_linenumber" name="199" href="#199">199</a>                             <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(table,
-<a class="jxr_linenumber" name="200" href="#200">200</a>                                             delete.getRow(),
-<a class="jxr_linenumber" name="201" href="#201">201</a>                                             CellUtil.cloneFamily(cell),
-<a class="jxr_linenumber" name="202" href="#202">202</a>                                             CellUtil.cloneQualifier(cell),
-<a class="jxr_linenumber" name="203" href="#203">203</a>                                             cell.getTimestamp()));
-<a class="jxr_linenumber" name="204" href="#204">204</a>                         <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="205" href="#205">205</a>                     <strong class="jxr_keyword">case</strong> DeleteFamily:
-<a class="jxr_linenumber" name="206" href="#206">206</a>                         deleteG.addFamily(CellUtil.cloneFamily(cell));
-<a class="jxr_linenumber" name="207" href="#207">207</a>                         issueGet = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="208" href="#208">208</a>                         <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="209" href="#209">209</a>                     <strong class="jxr_keyword">case</strong> Delete:
-<a class="jxr_linenumber" name="210" href="#210">210</a>                         <strong class="jxr_keyword">if</strong> (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP) {
-<a class="jxr_linenumber" name="211" href="#211">211</a>                             deleteP.add(CellUtil.cloneFamily(cell),
-<a class="jxr_linenumber" name="212" href="#212">212</a>                                         CellUtil.cloneQualifier(cell),
-<a class="jxr_linenumber" name="213" href="#213">213</a>                                         startTimestamp,
-<a class="jxr_linenumber" name="214" href="#214">214</a>                                         CellUtils.DELETE_TOMBSTONE);
-<a class="jxr_linenumber" name="215" href="#215">215</a>                             transaction.addWriteSetElement(
-<a class="jxr_linenumber" name="216" href="#216">216</a>                                 <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(table,
-<a class="jxr_linenumber" name="217" href="#217">217</a>                                                 delete.getRow(),
-<a class="jxr_linenumber" name="218" href="#218">218</a>                                                 CellUtil.cloneFamily(cell),
-<a class="jxr_linenumber" name="219" href="#219">219</a>                                                 CellUtil.cloneQualifier(cell),
-<a class="jxr_linenumber" name="220" href="#220">220</a>                                                 cell.getTimestamp()));
-<a class="jxr_linenumber" name="221" href="#221">221</a>                             <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="222" href="#222">222</a>                         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="223" href="#223">223</a>                             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException(
-<a class="jxr_linenumber" name="224" href="#224">224</a>                                 <span class="jxr_string">"Cannot delete specific versions on Snapshot Isolation."</span>);
-<a class="jxr_linenumber" name="225" href="#225">225</a>                         }
-<a class="jxr_linenumber" name="226" href="#226">226</a>                     <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="227" href="#227">227</a>                         <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="228" href="#228">228</a>                 }
-<a class="jxr_linenumber" name="229" href="#229">229</a>             }
-<a class="jxr_linenumber" name="230" href="#230">230</a>         }
-<a class="jxr_linenumber" name="231" href="#231">231</a>         <strong class="jxr_keyword">if</strong> (issueGet) {
-<a class="jxr_linenumber" name="232" href="#232">232</a>             <em class="jxr_comment">// It's better to perform a transactional get to avoid deleting more</em>
-<a class="jxr_linenumber" name="233" href="#233">233</a>             <em class="jxr_comment">// than necessary</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>             Result result = <strong class="jxr_keyword">this</strong>.get(transaction, deleteG);
-<a class="jxr_linenumber" name="235" href="#235">235</a>             <strong class="jxr_keyword">if</strong> (!result.isEmpty()) {
-<a class="jxr_linenumber" name="236" href="#236">236</a>                 <strong class="jxr_keyword">for</strong> (Entry&lt;byte[], NavigableMap&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt;&gt; entryF : result.getMap()
-<a class="jxr_linenumber" name="237" href="#237">237</a>                     .entrySet()) {
-<a class="jxr_linenumber" name="238" href="#238">238</a>                     byte[] family = entryF.getKey();
-<a class="jxr_linenumber" name="239" href="#239">239</a>                     <strong class="jxr_keyword">for</strong> (Entry&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt; entryQ : entryF.getValue().entrySet()) {
-<a class="jxr_linenumber" name="240" href="#240">240</a>                         byte[] qualifier = entryQ.getKey();
-<a class="jxr_linenumber" name="241" href="#241">241</a>                         deleteP.add(family, qualifier, CellUtils.DELETE_TOMBSTONE);
-<a class="jxr_linenumber" name="242" href="#242">242</a>                         transaction.addWriteSetElement(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(table, delete.getRow(), family, qualifier,
-<a class="jxr_linenumber" name="243" href="#243">243</a>                                                                        transaction.getStartTimestamp()));
-<a class="jxr_linenumber" name="244" href="#244">244</a>                     }
-<a class="jxr_linenumber" name="245" href="#245">245</a>                 }
-<a class="jxr_linenumber" name="246" href="#246">246</a>             }
-<a class="jxr_linenumber" name="247" href="#247">247</a>         }
-<a class="jxr_linenumber" name="248" href="#248">248</a> 
-<a class="jxr_linenumber" name="249" href="#249">249</a>         <strong class="jxr_keyword">if</strong> (!deleteP.isEmpty()) {
-<a class="jxr_linenumber" name="250" href="#250">250</a>             table.put(deleteP);
-<a class="jxr_linenumber" name="251" href="#251">251</a>         }
-<a class="jxr_linenumber" name="252" href="#252">252</a> 
-<a class="jxr_linenumber" name="253" href="#253">253</a>     }
-<a class="jxr_linenumber" name="254" href="#254">254</a> 
-<a class="jxr_linenumber" name="255" href="#255">255</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="256" href="#256">256</a> <em class="jxr_javadoccomment">     * Transactional version of {@link HTableInterface#put(Put put)}</em>
-<a class="jxr_linenumber" name="257" href="#257">257</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="258" href="#258">258</a> <em class="jxr_javadoccomment">     * @param put an instance of Put</em>
-<a class="jxr_linenumber" name="259" href="#259">259</a> <em class="jxr_javadoccomment">     * @param tx  an instance of transaction to be used</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
-<a class="jxr_linenumber" name="261" href="#261">261</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="262" href="#262">262</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> put(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx, Put put) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="263" href="#263">263</a> 
-<a class="jxr_linenumber" name="264" href="#264">264</a>         throwExceptionIfOpSetsTimerange(put);
-<a class="jxr_linenumber" name="265" href="#265">265</a> 
-<a class="jxr_linenumber" name="266" href="#266">266</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction = enforceHBaseTransactionAsParam(tx);
-<a class="jxr_linenumber" name="267" href="#267">267</a> 
-<a class="jxr_linenumber" name="268" href="#268">268</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> startTimestamp = transaction.getStartTimestamp();
-<a class="jxr_linenumber" name="269" href="#269">269</a>         <em class="jxr_comment">// create put with correct ts</em>
-<a class="jxr_linenumber" name="270" href="#270">270</a>         <strong class="jxr_keyword">final</strong> Put tsput = <strong class="jxr_keyword">new</strong> Put(put.getRow(), startTimestamp);
-<a class="jxr_linenumber" name="271" href="#271">271</a>         Map&lt;byte[], List&lt;Cell&gt;&gt; kvs = put.getFamilyCellMap();
-<a class="jxr_linenumber" name="272" href="#272">272</a>         <strong class="jxr_keyword">for</strong> (List&lt;Cell&gt; kvl : kvs.values()) {
-<a class="jxr_linenumber" name="273" href="#273">273</a>             <strong class="jxr_keyword">for</strong> (Cell c : kvl) {
-<a class="jxr_linenumber" name="274" href="#274">274</a>                 CellUtils.validateCell(c, startTimestamp);
-<a class="jxr_linenumber" name="275" href="#275">275</a>                 <em class="jxr_comment">// Reach into keyvalue to update timestamp.</em>
-<a class="jxr_linenumber" name="276" href="#276">276</a>                 <em class="jxr_comment">// It's not nice to reach into keyvalue internals,</em>
-<a class="jxr_linenumber" name="277" href="#277">277</a>                 <em class="jxr_comment">// but we want to avoid having to copy the whole thing</em>
-<a class="jxr_linenumber" name="278" href="#278">278</a>                 KeyValue kv = KeyValueUtil.ensureKeyValue(c);
-<a class="jxr_linenumber" name="279" href="#279">279</a>                 Bytes.putLong(kv.getValueArray(), kv.getTimestampOffset(), startTimestamp);
-<a class="jxr_linenumber" name="280" href="#280">280</a>                 tsput.add(kv);
-<a class="jxr_linenumber" name="281" href="#281">281</a> 
-<a class="jxr_linenumber" name="282" href="#282">282</a>                 transaction.addWriteSetElement(
-<a class="jxr_linenumber" name="283" href="#283">283</a>                     <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(table,
-<a class="jxr_linenumber" name="284" href="#284">284</a>                                     CellUtil.cloneRow(kv),
-<a class="jxr_linenumber" name="285" href="#285">285</a>                                     CellUtil.cloneFamily(kv),
-<a class="jxr_linenumber" name="286" href="#286">286</a>                                     CellUtil.cloneQualifier(kv),
-<a class="jxr_linenumber" name="287" href="#287">287</a>                                     kv.getTimestamp()));
-<a class="jxr_linenumber" name="288" href="#288">288</a>             }
-<a class="jxr_linenumber" name="289" href="#289">289</a>         }
-<a class="jxr_linenumber" name="290" href="#290">290</a> 
-<a class="jxr_linenumber" name="291" href="#291">291</a>         table.put(tsput);
-<a class="jxr_linenumber" name="292" href="#292">292</a>     }
-<a class="jxr_linenumber" name="293" href="#293">293</a> 
-<a class="jxr_linenumber" name="294" href="#294">294</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="295" href="#295">295</a> <em class="jxr_javadoccomment">     * Transactional version of {@link HTableInterface#getScanner(Scan scan)}</em>
-<a class="jxr_linenumber" name="296" href="#296">296</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="297" href="#297">297</a> <em class="jxr_javadoccomment">     * @param scan an instance of Scan</em>
-<a class="jxr_linenumber" name="298" href="#298">298</a> <em class="jxr_javadoccomment">     * @param tx   an instance of transaction to be used</em>
-<a class="jxr_linenumber" name="299" href="#299">299</a> <em class="jxr_javadoccomment">     * @return ResultScanner an instance of ResultScanner</em>
-<a class="jxr_linenumber" name="300" href="#300">300</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
-<a class="jxr_linenumber" name="301" href="#301">301</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="302" href="#302">302</a>     <strong class="jxr_keyword">public</strong> ResultScanner getScanner(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx, Scan scan) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="303" href="#303">303</a> 
-<a class="jxr_linenumber" name="304" href="#304">304</a>         throwExceptionIfOpSetsTimerange(scan);
+<a class="jxr_linenumber" name="97" href="#97">97</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Table hTable) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <strong class="jxr_keyword">this</strong>(hTable, hTable.getConfiguration().getBoolean(<span class="jxr_string">"omid.server.side.filter"</span>, false));
+<a class="jxr_linenumber" name="99" href="#99">99</a>      }
+<a class="jxr_linenumber" name="100" href="#100">100</a> 
+<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Table hTable, <strong class="jxr_keyword">boolean</strong> serverSideFilter) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="102" href="#102">102</a>         table = hTable;
+<a class="jxr_linenumber" name="103" href="#103">103</a>         mutations = <strong class="jxr_keyword">new</strong> ArrayList&lt;Mutation&gt;();
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">this</strong>.serverSideFilter = serverSideFilter;
+<a class="jxr_linenumber" name="105" href="#105">105</a>         snapshotFilter = (serverSideFilter) ?  <strong class="jxr_keyword">new</strong> AttributeSetSnapshotFilter(hTable) :
+<a class="jxr_linenumber" name="106" href="#106">106</a>                 <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HTableAccessWrapper.html">HTableAccessWrapper</a>(hTable, hTable));
+<a class="jxr_linenumber" name="107" href="#107">107</a>     }
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Table hTable, <a href="../../../../org/apache/omid/transaction/SnapshotFilter.html">SnapshotFilter</a> snapshotFilter ) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="110" href="#110">110</a>         table = hTable;
+<a class="jxr_linenumber" name="111" href="#111">111</a>         mutations = <strong class="jxr_keyword">new</strong> ArrayList&lt;Mutation&gt;();
+<a class="jxr_linenumber" name="112" href="#112">112</a>         <strong class="jxr_keyword">this</strong>.snapshotFilter = snapshotFilter;
+<a class="jxr_linenumber" name="113" href="#113">113</a>     }
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a>(Table hTable, CommitTable.Client commitTableClient) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="116" href="#116">116</a>         table = hTable;
+<a class="jxr_linenumber" name="117" href="#117">117</a>         mutations = <strong class="jxr_keyword">new</strong> ArrayList&lt;Mutation&gt;();
+<a class="jxr_linenumber" name="118" href="#118">118</a>         serverSideFilter = table.getConfiguration().getBoolean(<span class="jxr_string">"omid.server.side.filter"</span>, false);
+<a class="jxr_linenumber" name="119" href="#119">119</a>         snapshotFilter = (serverSideFilter) ?  <strong class="jxr_keyword">new</strong> AttributeSetSnapshotFilter(hTable) :
+<a class="jxr_linenumber" name="120" href="#120">120</a>                 <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HTableAccessWrapper.html">HTableAccessWrapper</a>(hTable, hTable), commitTableClient);
+<a class="jxr_linenumber" name="121" href="#121">121</a>     }
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <em class="jxr_comment">// Closeable implementation</em>
+<a class="jxr_linenumber" name="125" href="#125">125</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="126" href="#126">126</a> 
+<a class="jxr_linenumber" name="127" href="#127">127</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="128" href="#128">128</a> <em class="jxr_javadoccomment">     * Releases any resources held or pending changes in internal buffers.</em>
+<a class="jxr_linenumber" name="129" href="#129">129</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="130" href="#130">130</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
+<a class="jxr_linenumber" name="131" href="#131">131</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="132" href="#132">132</a>     @Override
+<a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="134" href="#134">134</a>         table.close();
+<a class="jxr_linenumber" name="135" href="#135">135</a>     }
+<a class="jxr_linenumber" name="136" href="#136">136</a> 
+<a class="jxr_linenumber" name="137" href="#137">137</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a>     <em class="jxr_comment">// Transactional operations</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a> 
+<a class="jxr_linenumber" name="141" href="#141">141</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="142" href="#142">142</a> <em class="jxr_javadoccomment">     * Transactional version of {@link Table#get(Get get)}</em>
+<a class="jxr_linenumber" name="143" href="#143">143</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="144" href="#144">144</a> <em class="jxr_javadoccomment">     * @param get an instance of Get</em>
+<a class="jxr_linenumber" name="145" href="#145">145</a> <em class="jxr_javadoccomment">     * @param tx  an instance of transaction to be used</em>
+<a class="jxr_linenumber" name="146" href="#146">146</a> <em class="jxr_javadoccomment">     * @return Result an instance of Result</em>
+<a class="jxr_linenumber" name="147" href="#147">147</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
+<a class="jxr_linenumber" name="148" href="#148">148</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="149" href="#149">149</a>     <strong class="jxr_keyword">public</strong> Result get(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx, <strong class="jxr_keyword">final</strong> Get get) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="150" href="#150">150</a> 
+<a class="jxr_linenumber" name="151" href="#151">151</a>         throwExceptionIfOpSetsTimerange(get);
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction = enforceHBaseTransactionAsParam(tx);
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> readTimestamp = transaction.getReadTimestamp();
+<a class="jxr_linenumber" name="156" href="#156">156</a>         <strong class="jxr_keyword">final</strong> Get tsget = <strong class="jxr_keyword">new</strong> Get(get.getRow()).setFilter(get.getFilter());
+<a class="jxr_linenumber" name="157" href="#157">157</a>         propagateAttributes(get, tsget);
+<a class="jxr_linenumber" name="158" href="#158">158</a>         TimeRange timeRange = get.getTimeRange();
+<a class="jxr_linenumber" name="159" href="#159">159</a>         <strong class="jxr_keyword">long</strong> startTime = timeRange.getMin();
+<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">long</strong> endTime = Math.min(timeRange.getMax(), readTimestamp + 1);
+<a class="jxr_linenumber" name="161" href="#161">161</a>         tsget.setTimeRange(startTime, endTime).setMaxVersions(1);
+<a class="jxr_linenumber" name="162" href="#162">162</a>         Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; kvs = get.getFamilyMap();
+<a class="jxr_linenumber" name="163" href="#163">163</a>         <strong class="jxr_keyword">for</strong> (Map.Entry&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; entry : kvs.entrySet()) {
+<a class="jxr_linenumber" name="164" href="#164">164</a>             byte[] family = entry.getKey();
+<a class="jxr_linenumber" name="165" href="#165">165</a>             NavigableSet&lt;byte[]&gt; qualifiers = entry.getValue();
+<a class="jxr_linenumber" name="166" href="#166">166</a>             <strong class="jxr_keyword">if</strong> (qualifiers == <strong class="jxr_keyword">null</strong> || qualifiers.isEmpty()) {
+<a class="jxr_linenumber" name="167" href="#167">167</a>                 tsget.addFamily(family);
+<a class="jxr_linenumber" name="168" href="#168">168</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="169" href="#169">169</a>                 <strong class="jxr_keyword">for</strong> (byte[] qualifier : qualifiers) {
+<a class="jxr_linenumber" name="170" href="#170">170</a>                     tsget.addColumn(family, qualifier);
+<a class="jxr_linenumber" name="171" href="#171">171</a>                     tsget.addColumn(family, CellUtils.addShadowCellSuffixPrefix(qualifier));
+<a class="jxr_linenumber" name="172" href="#172">172</a>                 }
+<a class="jxr_linenumber" name="173" href="#173">173</a>                 tsget.addColumn(family, CellUtils.FAMILY_DELETE_QUALIFIER);
+<a class="jxr_linenumber" name="174" href="#174">174</a>                 tsget.addColumn(family, CellUtils.addShadowCellSuffixPrefix(CellUtils.FAMILY_DELETE_QUALIFIER));
+<a class="jxr_linenumber" name="175" href="#175">175</a>             }
+<a class="jxr_linenumber" name="176" href="#176">176</a>         }
+<a class="jxr_linenumber" name="177" href="#177">177</a>         LOG.trace(<span class="jxr_string">"Initial Get = {}"</span>, tsget);
+<a class="jxr_linenumber" name="178" href="#178">178</a> 
+<a class="jxr_linenumber" name="179" href="#179">179</a>         <strong class="jxr_keyword">return</strong> snapshotFilter.get(tsget, transaction);
+<a class="jxr_linenumber" name="180" href="#180">180</a>     }
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> propagateAttributes(OperationWithAttributes from, OperationWithAttributes to) {
+<a class="jxr_linenumber" name="183" href="#183">183</a>         Map&lt;String,byte[]&gt; attributeMap = from.getAttributesMap();
+<a class="jxr_linenumber" name="184" href="#184">184</a> 
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">for</strong> (Map.Entry&lt;String,byte[]&gt; entry : attributeMap.entrySet()) {
+<a class="jxr_linenumber" name="186" href="#186">186</a>             to.setAttribute(entry.getKey(), entry.getValue());
+<a class="jxr_linenumber" name="187" href="#187">187</a>         }
+<a class="jxr_linenumber" name="188" href="#188">188</a>     }
+<a class="jxr_linenumber" name="189" href="#189">189</a> 
+<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> familyQualifierBasedDeletion(<a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> tx, Put deleteP, Get deleteG) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="191" href="#191">191</a>         Result result = <strong class="jxr_keyword">this</strong>.get(tx, deleteG);
+<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">if</strong> (!result.isEmpty()) {
+<a class="jxr_linenumber" name="193" href="#193">193</a>             <strong class="jxr_keyword">for</strong> (Entry&lt;byte[], NavigableMap&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt;&gt; entryF : result.getMap()
+<a class="jxr_linenumber" name="194" href="#194">194</a>                     .entrySet()) {
+<a class="jxr_linenumber" name="195" href="#195">195</a>                 byte[] family = entryF.getKey();
+<a class="jxr_linenumber" name="196" href="#196">196</a>                 <strong class="jxr_keyword">for</strong> (Entry&lt;byte[], NavigableMap&lt;Long, byte[]&gt;&gt; entryQ : entryF.getValue().entrySet()) {
+<a class="jxr_linenumber" name="197" href="#197">197</a>                     byte[] qualifier = entryQ.getKey();
+<a class="jxr_linenumber" name="198" href="#198">198</a>                     tx.addWriteSetElement(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(<strong class="jxr_keyword">this</strong>, deleteP.getRow(), family, qualifier,
+<a class="jxr_linenumber" name="199" href="#199">199</a>                             tx.getWriteTimestamp()));
+<a class="jxr_linenumber" name="200" href="#200">200</a>                 }
+<a class="jxr_linenumber" name="201" href="#201">201</a>                 deleteP.addColumn(family, CellUtils.FAMILY_DELETE_QUALIFIER, tx.getWriteTimestamp(),
+<a class="jxr_linenumber" name="202" href="#202">202</a>                         HConstants.EMPTY_BYTE_ARRAY);
+<a class="jxr_linenumber" name="203" href="#203">203</a>                 tx.addWriteSetElement(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(<strong class="jxr_keyword">this</strong>, deleteP.getRow(), family, CellUtils.FAMILY_DELETE_QUALIFIER,
+<a class="jxr_linenumber" name="204" href="#204">204</a>                                                 tx.getWriteTimestamp()));
+<a class="jxr_linenumber" name="205" href="#205">205</a>             }
+<a class="jxr_linenumber" name="206" href="#206">206</a>         }
+<a class="jxr_linenumber" name="207" href="#207">207</a>     }
+<a class="jxr_linenumber" name="208" href="#208">208</a> 
+<a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong>  familyQualifierBasedDeletionWithOutRead(HBaseTransaction tx, Put deleteP, Get deleteG) {
+<a class="jxr_linenumber" name="210" href="#210">210</a>         Set&lt;byte[]&gt; fset = deleteG.getFamilyMap().keySet();
+<a class="jxr_linenumber" name="211" href="#211">211</a> 
+<a class="jxr_linenumber" name="212" href="#212">212</a>         <strong class="jxr_keyword">for</strong> (byte[] family : fset) {
+<a class="jxr_linenumber" name="213" href="#213">213</a>             deleteP.addColumn(family, CellUtils.FAMILY_DELETE_QUALIFIER, tx.getWriteTimestamp(),
+<a class="jxr_linenumber" name="214" href="#214">214</a>                     HConstants.EMPTY_BYTE_ARRAY);
+<a class="jxr_linenumber" name="215" href="#215">215</a>             tx.addWriteSetElement(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(<strong class="jxr_keyword">this</strong>, deleteP.getRow(), family, CellUtils.FAMILY_DELETE_QUALIFIER,
+<a class="jxr_linenumber" name="216" href="#216">216</a>                     tx.getWriteTimestamp()));
+<a class="jxr_linenumber" name="217" href="#217">217</a> 
+<a class="jxr_linenumber" name="218" href="#218">218</a>         }
+<a class="jxr_linenumber" name="219" href="#219">219</a>     }
+<a class="jxr_linenumber" name="220" href="#220">220</a> 
+<a class="jxr_linenumber" name="221" href="#221">221</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="222" href="#222">222</a> <em class="jxr_javadoccomment">     * Transactional version of {@link Table#delete(Delete delete)}</em>
+<a class="jxr_linenumber" name="223" href="#223">223</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="224" href="#224">224</a> <em class="jxr_javadoccomment">     * @param delete an instance of Delete</em>
+<a class="jxr_linenumber" name="225" href="#225">225</a> <em class="jxr_javadoccomment">     * @param tx     an instance of transaction to be used</em>
+<a class="jxr_linenumber" name="226" href="#226">226</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
+<a class="jxr_linenumber" name="227" href="#227">227</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="228" href="#228">228</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> delete(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx, Delete delete) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="229" href="#229">229</a> 
+<a class="jxr_linenumber" name="230" href="#230">230</a>         throwExceptionIfOpSetsTimerange(delete);
+<a class="jxr_linenumber" name="231" href="#231">231</a> 
+<a class="jxr_linenumber" name="232" href="#232">232</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction = enforceHBaseTransactionAsParam(tx);
+<a class="jxr_linenumber" name="233" href="#233">233</a> 
+<a class="jxr_linenumber" name="234" href="#234">234</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> writeTimestamp = transaction.getWriteTimestamp();
+<a class="jxr_linenumber" name="235" href="#235">235</a>         <strong class="jxr_keyword">boolean</strong> deleteFamily = false;
+<a class="jxr_linenumber" name="236" href="#236">236</a> 
+<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">final</strong> Put deleteP = <strong class="jxr_keyword">new</strong> Put(delete.getRow(), writeTimestamp);
+<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">final</strong> Get deleteG = <strong class="jxr_keyword">new</strong> Get(delete.getRow());
+<a class="jxr_linenumber" name="239" href="#239">239</a>         propagateAttributes(delete, deleteP);
+<a class="jxr_linenumber" name="240" href="#240">240</a>         propagateAttributes(delete, deleteG);
+<a class="jxr_linenumber" name="241" href="#241">241</a>         Map&lt;byte[], List&lt;Cell&gt;&gt; fmap = delete.getFamilyCellMap();
+<a class="jxr_linenumber" name="242" href="#242">242</a>         <strong class="jxr_keyword">if</strong> (fmap.isEmpty()) {
+<a class="jxr_linenumber" name="243" href="#243">243</a>             familyQualifierBasedDeletion(transaction, deleteP, deleteG);
+<a class="jxr_linenumber" name="244" href="#244">244</a>         }
+<a class="jxr_linenumber" name="245" href="#245">245</a> 
+<a class="jxr_linenumber" name="246" href="#246">246</a>         <strong class="jxr_keyword">for</strong> (List&lt;Cell&gt; cells : fmap.values()) {
+<a class="jxr_linenumber" name="247" href="#247">247</a>             <strong class="jxr_keyword">for</strong> (Cell cell : cells) {
+<a class="jxr_linenumber" name="248" href="#248">248</a>                 CellUtils.validateCell(cell, writeTimestamp);
+<a class="jxr_linenumber" name="249" href="#249">249</a>                 <strong class="jxr_keyword">switch</strong> (KeyValue.Type.codeToType(cell.getTypeByte())) {
+<a class="jxr_linenumber" name="250" href="#250">250</a>                     <strong class="jxr_keyword">case</strong> DeleteColumn:
+<a class="jxr_linenumber" name="251" href="#251">251</a>                         deleteP.addColumn(CellUtil.cloneFamily(cell),
+<a class="jxr_linenumber" name="252" href="#252">252</a>                                     CellUtil.cloneQualifier(cell),
+<a class="jxr_linenumber" name="253" href="#253">253</a>                                     writeTimestamp,
+<a class="jxr_linenumber" name="254" href="#254">254</a>                                     CellUtils.DELETE_TOMBSTONE);
+<a class="jxr_linenumber" name="255" href="#255">255</a>                         transaction.addWriteSetElement(
+<a class="jxr_linenumber" name="256" href="#256">256</a>                             <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(<strong class="jxr_keyword">this</strong>,
+<a class="jxr_linenumber" name="257" href="#257">257</a>                                             delete.getRow(),
+<a class="jxr_linenumber" name="258" href="#258">258</a>                                             CellUtil.cloneFamily(cell),
+<a class="jxr_linenumber" name="259" href="#259">259</a>                                             CellUtil.cloneQualifier(cell),
+<a class="jxr_linenumber" name="260" href="#260">260</a>                                             writeTimestamp));
+<a class="jxr_linenumber" name="261" href="#261">261</a>                         <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="262" href="#262">262</a>                     <strong class="jxr_keyword">case</strong> DeleteFamily:
+<a class="jxr_linenumber" name="263" href="#263">263</a>                         deleteG.addFamily(CellUtil.cloneFamily(cell));
+<a class="jxr_linenumber" name="264" href="#264">264</a>                         deleteFamily = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="265" href="#265">265</a>                         <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="266" href="#266">266</a>                     <strong class="jxr_keyword">case</strong> Delete:
+<a class="jxr_linenumber" name="267" href="#267">267</a>                         <strong class="jxr_keyword">if</strong> (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP) {
+<a class="jxr_linenumber" name="268" href="#268">268</a>                             deleteP.addColumn(CellUtil.cloneFamily(cell),
+<a class="jxr_linenumber" name="269" href="#269">269</a>                                         CellUtil.cloneQualifier(cell),
+<a class="jxr_linenumber" name="270" href="#270">270</a>                                         writeTimestamp,
+<a class="jxr_linenumber" name="271" href="#271">271</a>                                         CellUtils.DELETE_TOMBSTONE);
+<a class="jxr_linenumber" name="272" href="#272">272</a>                             transaction.addWriteSetElement(
+<a class="jxr_linenumber" name="273" href="#273">273</a>                                 <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(<strong class="jxr_keyword">this</strong>,
+<a class="jxr_linenumber" name="274" href="#274">274</a>                                                 delete.getRow(),
+<a class="jxr_linenumber" name="275" href="#275">275</a>                                                 CellUtil.cloneFamily(cell),
+<a class="jxr_linenumber" name="276" href="#276">276</a>                                                 CellUtil.cloneQualifier(cell),
+<a class="jxr_linenumber" name="277" href="#277">277</a>                                                 writeTimestamp));
+<a class="jxr_linenumber" name="278" href="#278">278</a>                             <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="279" href="#279">279</a>                         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="280" href="#280">280</a>                             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException(
+<a class="jxr_linenumber" name="281" href="#281">281</a>                                 <span class="jxr_string">"Cannot delete specific versions on Snapshot Isolation."</span>);
+<a class="jxr_linenumber" name="282" href="#282">282</a>                         }
+<a class="jxr_linenumber" name="283" href="#283">283</a>                     <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="284" href="#284">284</a>                         <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="285" href="#285">285</a>                 }
+<a class="jxr_linenumber" name="286" href="#286">286</a>             }
+<a class="jxr_linenumber" name="287" href="#287">287</a>         }
+<a class="jxr_linenumber" name="288" href="#288">288</a>         <strong class="jxr_keyword">if</strong> (deleteFamily) {
+<a class="jxr_linenumber" name="289" href="#289">289</a>             <strong class="jxr_keyword">if</strong> (enforceHBaseTransactionManagerAsParam(transaction.getTransactionManager()).getConflictDetectionLevel() == ConflictDetectionLevel.ROW) {
+<a class="jxr_linenumber" name="290" href="#290">290</a>                 familyQualifierBasedDeletionWithOutRead(transaction, deleteP, deleteG);
+<a class="jxr_linenumber" name="291" href="#291">291</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="292" href="#292">292</a>                 familyQualifierBasedDeletion(transaction, deleteP, deleteG);
+<a class="jxr_linenumber" name="293" href="#293">293</a>             }
+<a class="jxr_linenumber" name="294" href="#294">294</a>         }
+<a class="jxr_linenumber" name="295" href="#295">295</a> 
+<a class="jxr_linenumber" name="296" href="#296">296</a>         <strong class="jxr_keyword">if</strong> (!deleteP.isEmpty()) {
+<a class="jxr_linenumber" name="297" href="#297">297</a>             addMutation(deleteP);
+<a class="jxr_linenumber" name="298" href="#298">298</a>         }
+<a class="jxr_linenumber" name="299" href="#299">299</a> 
+<a class="jxr_linenumber" name="300" href="#300">300</a>     }
+<a class="jxr_linenumber" name="301" href="#301">301</a> 
+<a class="jxr_linenumber" name="302" href="#302">302</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> markPutAsConflictFreeMutation(Put put) {
+<a class="jxr_linenumber" name="303" href="#303">303</a>         put.setAttribute(CellUtils.CONFLICT_FREE_MUTATION, Bytes.toBytes(<strong class="jxr_keyword">true</strong>));
+<a class="jxr_linenumber" name="304" href="#304">304</a>     }
 <a class="jxr_linenumber" name="305" href="#305">305</a> 
-<a class="jxr_linenumber" name="306" href="#306">306</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction = enforceHBaseTransactionAsParam(tx);
-<a class="jxr_linenumber" name="307" href="#307">307</a> 
-<a class="jxr_linenumber" name="308" href="#308">308</a>         Scan tsscan = <strong class="jxr_keyword">new</strong> Scan(scan);
-<a class="jxr_linenumber" name="309" href="#309">309</a>         tsscan.setMaxVersions(1);
-<a class="jxr_linenumber" name="310" href="#310">310</a>         tsscan.setTimeRange(0, transaction.getStartTimestamp() + 1);
-<a class="jxr_linenumber" name="311" href="#311">311</a>         Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; kvs = scan.getFamilyMap();
-<a class="jxr_linenumber" name="312" href="#312">312</a>         <strong class="jxr_keyword">for</strong> (Map.Entry&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; entry : kvs.entrySet()) {
-<a class="jxr_linenumber" name="313" href="#313">313</a>             byte[] family = entry.getKey();
-<a class="jxr_linenumber" name="314" href="#314">314</a>             NavigableSet&lt;byte[]&gt; qualifiers = entry.getValue();
-<a class="jxr_linenumber" name="315" href="#315">315</a>             <strong class="jxr_keyword">if</strong> (qualifiers == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="316" href="#316">316</a>                 <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="317" href="#317">317</a>             }
-<a class="jxr_linenumber" name="318" href="#318">318</a>             <strong class="jxr_keyword">for</strong> (byte[] qualifier : qualifiers) {
-<a class="jxr_linenumber" name="319" href="#319">319</a>                 tsscan.addColumn(family, CellUtils.addShadowCellSuffix(qualifier));
-<a class="jxr_linenumber" name="320" href="#320">320</a>             }
-<a class="jxr_linenumber" name="321" href="#321">321</a>         }
-<a class="jxr_linenumber" name="322" href="#322">322</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TransactionalClientScanner</a>(transaction, tsscan, 1);
-<a class="jxr_linenumber" name="323" href="#323">323</a>     }
-<a class="jxr_linenumber" name="324" href="#324">324</a> 
-<a class="jxr_linenumber" name="325" href="#325">325</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="326" href="#326">326</a> <em class="jxr_javadoccomment">     * Filters the raw results returned from HBase and returns only those belonging to the current snapshot, as defined</em>
-<a class="jxr_linenumber" name="327" href="#327">327</a> <em class="jxr_javadoccomment">     * by the transaction object. If the raw results don't contain enough information for a particular qualifier, it</em>
-<a class="jxr_linenumber" name="328" href="#328">328</a> <em class="jxr_javadoccomment">     * will request more versions from HBase.</em>
-<a class="jxr_linenumber" name="329" href="#329">329</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="330" href="#330">330</a> <em class="jxr_javadoccomment">     * @param rawCells          Raw cells that we are going to filter</em>
-<a class="jxr_linenumber" name="331" href="#331">331</a> <em class="jxr_javadoccomment">     * @param transaction       Defines the current snapshot</em>
-<a class="jxr_linenumber" name="332" href="#332">332</a> <em class="jxr_javadoccomment">     * @param versionsToRequest Number of versions requested from hbase</em>
-<a class="jxr_linenumber" name="333" href="#333">333</a> <em class="jxr_javadoccomment">     * @return Filtered KVs belonging to the transaction snapshot</em>
-<a class="jxr_linenumber" name="334" href="#334">334</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="335" href="#335">335</a>     List&lt;Cell&gt; filterCellsForSnapshot(List&lt;Cell&gt; rawCells, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction,
-<a class="jxr_linenumber" name="336" href="#336">336</a>                                       <strong class="jxr_keyword">int</strong> versionsToRequest) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="337" href="#337">337</a> 
-<a class="jxr_linenumber" name="338" href="#338">338</a>         assert (rawCells != <strong class="jxr_keyword">null</strong> &amp;&amp; transaction != <strong class="jxr_keyword">null</strong> &amp;&amp; versionsToRequest &gt;= 1);
-<a class="jxr_linenumber" name="339" href="#339">339</a> 
-<a class="jxr_linenumber" name="340" href="#340">340</a>         List&lt;Cell&gt; keyValuesInSnapshot = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="341" href="#341">341</a>         List&lt;Get&gt; pendingGetsList = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="342" href="#342">342</a> 
-<a class="jxr_linenumber" name="343" href="#343">343</a>         <strong class="jxr_keyword">int</strong> numberOfVersionsToFetch = versionsToRequest * 2;
-<a class="jxr_linenumber" name="344" href="#344">344</a>         <strong class="jxr_keyword">if</strong> (numberOfVersionsToFetch &lt; 1) {
-<a class="jxr_linenumber" name="345" href="#345">345</a>             numberOfVersionsToFetch = versionsToRequest;
-<a class="jxr_linenumber" name="346" href="#346">346</a>         }
-<a class="jxr_linenumber" name="347" href="#347">347</a> 
-<a class="jxr_linenumber" name="348" href="#348">348</a>         Map&lt;Long, Long&gt; commitCache = buildCommitCache(rawCells);
-<a class="jxr_linenumber" name="349" href="#349">349</a> 
-<a class="jxr_linenumber" name="350" href="#350">350</a>         <strong class="jxr_keyword">for</strong> (Collection&lt;Cell&gt; columnCells : groupCellsByColumnFilteringShadowCells(rawCells)) {
-<a class="jxr_linenumber" name="351" href="#351">351</a>             <strong class="jxr_keyword">boolean</strong> snapshotValueFound = false;
-<a class="jxr_linenumber" name="352" href="#352">352</a>             Cell oldestCell = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="353" href="#353">353</a>             <strong class="jxr_keyword">for</strong> (Cell cell : columnCells) {
-<a class="jxr_linenumber" name="354" href="#354">354</a>                 <strong class="jxr_keyword">if</strong> (isCellInSnapshot(cell, transaction, commitCache)) {
-<a class="jxr_linenumber" name="355" href="#355">355</a>                     <strong class="jxr_keyword">if</strong> (!CellUtil.matchingValue(cell, CellUtils.DELETE_TOMBSTONE)) {
-<a class="jxr_linenumber" name="356" href="#356">356</a>                         keyValuesInSnapshot.add(cell);
-<a class="jxr_linenumber" name="357" href="#357">357</a>                     }
-<a class="jxr_linenumber" name="358" href="#358">358</a>                     snapshotValueFound = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="359" href="#359">359</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="360" href="#360">360</a>                 }
-<a class="jxr_linenumber" name="361" href="#361">361</a>                 oldestCell = cell;
-<a class="jxr_linenumber" name="362" href="#362">362</a>             }
-<a class="jxr_linenumber" name="363" href="#363">363</a>             <strong class="jxr_keyword">if</strong> (!snapshotValueFound) {
-<a class="jxr_linenumber" name="364" href="#364">364</a>                 assert (oldestCell != <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="365" href="#365">365</a>                 Get pendingGet = createPendingGet(oldestCell, numberOfVersionsToFetch);
-<a class="jxr_linenumber" name="366" href="#366">366</a>                 pendingGetsList.add(pendingGet);
-<a class="jxr_linenumber" name="367" href="#367">367</a>             }
-<a class="jxr_linenumber" name="368" href="#368">368</a>         }
-<a class="jxr_linenumber" name="369" href="#369">369</a> 
-<a class="jxr_linenumber" name="370" href="#370">370</a>         <strong class="jxr_keyword">if</strong> (!pendingGetsList.isEmpty()) {
-<a class="jxr_linenumber" name="371" href="#371">371</a>             Result[] pendingGetsResults = table.get(pendingGetsList);
-<a class="jxr_linenumber" name="372" href="#372">372</a>             <strong class="jxr_keyword">for</strong> (Result pendingGetResult : pendingGetsResults) {
-<a class="jxr_linenumber" name="373" href="#373">373</a>                 <strong class="jxr_keyword">if</strong> (!pendingGetResult.isEmpty()) {
-<a class="jxr_linenumber" name="374" href="#374">374</a>                     keyValuesInSnapshot.addAll(
-<a class="jxr_linenumber" name="375" href="#375">375</a>                         filterCellsForSnapshot(pendingGetResult.listCells(), transaction, numberOfVersionsToFetch));
-<a class="jxr_linenumber" name="376" href="#376">376</a>                 }
-<a class="jxr_linenumber" name="377" href="#377">377</a>             }
-<a class="jxr_linenumber" name="378" href="#378">378</a>         }
-<a class="jxr_linenumber" name="379" href="#379">379</a> 
-<a class="jxr_linenumber" name="380" href="#380">380</a>         Collections.sort(keyValuesInSnapshot, KeyValue.COMPARATOR);
-<a class="jxr_linenumber" name="381" href="#381">381</a> 
-<a class="jxr_linenumber" name="382" href="#382">382</a>         assert (keyValuesInSnapshot.size() &lt;= rawCells.size());
-<a class="jxr_linenumber" name="383" href="#383">383</a>         <strong class="jxr_keyword">return</strong> keyValuesInSnapshot;
-<a class="jxr_linenumber" name="384" href="#384">384</a>     }
+<a class="jxr_linenumber" name="306" href="#306">306</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="307" href="#307">307</a> <em class="jxr_javadoccomment">     * Transactional version of {@link Table#put(Put put)}</em>
+<a class="jxr_linenumber" name="308" href="#308">308</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="309" href="#309">309</a> <em class="jxr_javadoccomment">     * @param put an instance of Put</em>
+<a class="jxr_linenumber" name="310" href="#310">310</a> <em class="jxr_javadoccomment">     * @param tx  an instance of transaction to be used</em>
+<a class="jxr_linenumber" name="311" href="#311">311</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
+<a class="jxr_linenumber" name="312" href="#312">312</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="313" href="#313">313</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> put(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> tx, Put put) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="314" href="#314">314</a>         put(tx, put, false);
+<a class="jxr_linenumber" name="315" href="#315">315</a>     }
+<a class="jxr_linenumber" name="316" href="#316">316</a> 
+<a class="jxr_linenumber" name="317" href="#317">317</a> 
+<a class="jxr_linenumber" name="318" href="#318">318</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="319" href="#319">319</a> <em class="jxr_javadoccomment">     * @param put an instance of Put</em>
+<a class="jxr_linenumber" name="320" href="#320">320</a> <em class="jxr_javadoccomment">     * @param timestamp  timestamp to be used as cells version</em>
+<a class="jxr_linenumber" name="321" href="#321">321</a> <em class="jxr_javadoccomment">     * @param commitTimestamp  timestamp to be used as commit timestamp</em>
+<a class="jxr_linenumber" name="322" href="#322">322</a> <em class="jxr_javadoccomment">     * @throws IOException if a remote or network exception occurs.</em>
+<a class="jxr_linenumber" name="323" href="#323">323</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="324" href="#324">324</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> Put markPutAsCommitted(Put put, <strong class="jxr_keyword">long</strong> timestamp, <strong class="jxr_keyword">long</strong> commitTimestamp) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="325" href="#325">325</a>         <strong class="jxr_keyword">final</strong> Put tsput = <strong class="jxr_keyword">new</strong> Put(put.getRow(), timestamp);
+<a class="jxr_linenumber" name="326" href="#326">326</a>         propagateAttributes(put, tsput);
+<a class="jxr_linenumber" name="327" href="#327">327</a> 
+<a class="jxr_linenumber" name="328" href="#328">328</a>         Map&lt;byte[], List&lt;Cell&gt;&gt; kvs = put.getFamilyCellMap();
+<a class="jxr_linenumber" name="329" href="#329">329</a>         <strong class="jxr_keyword">for</strong> (List&lt;Cell&gt; kvl : kvs.values()) {
+<a class="jxr_linenumber" name="330" href="#330">330</a>             <strong class="jxr_keyword">for</strong> (Cell c : kvl) {
+<a class="jxr_linenumber" name="331" href="#331">331</a>                 KeyValue kv = KeyValueUtil.ensureKeyValue(c);
+<a class="jxr_linenumber" name="332" href="#332">332</a>                 Bytes.putLong(kv.getValueArray(), kv.getTimestampOffset(), timestamp);
+<a class="jxr_linenumber" name="333" href="#333">333</a>                 tsput.add(kv);
+<a class="jxr_linenumber" name="334" href="#334">334</a>                 tsput.addColumn(CellUtil.cloneFamily(kv),
+<a class="jxr_linenumber" name="335" href="#335">335</a>                         CellUtils.addShadowCellSuffixPrefix(CellUtil.cloneQualifier(kv), 0, CellUtil.cloneQualifier(kv).length),
+<a class="jxr_linenumber" name="336" href="#336">336</a>                         kv.getTimestamp(),
+<a class="jxr_linenumber" name="337" href="#337">337</a>                         Bytes.toBytes(commitTimestamp));
+<a class="jxr_linenumbe

<TRUNCATED>


[13/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/AttributeSetSnapshotFilter.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/AttributeSetSnapshotFilter.html b/xref/org/apache/omid/transaction/AttributeSetSnapshotFilter.html
new file mode 100644
index 0000000..b831103
--- /dev/null
+++ b/xref/org/apache/omid/transaction/AttributeSetSnapshotFilter.html
@@ -0,0 +1,99 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>AttributeSetSnapshotFilter xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/AttributeSetSnapshotFilter.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.proto.TSOProto;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/AttributeSetSnapshotFilter.html">AttributeSetSnapshotFilter</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilter.html">SnapshotFilter</a> {
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> Table table;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AttributeSetSnapshotFilter.html">AttributeSetSnapshotFilter</a>(Table table) {
+<a class="jxr_linenumber" name="41" href="#41">41</a>          <strong class="jxr_keyword">this</strong>.table = table;
+<a class="jxr_linenumber" name="42" href="#42">42</a>      }
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> TSOProto.Transaction.Builder getBuilder(<a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction) {
+<a class="jxr_linenumber" name="45" href="#45">45</a>          <strong class="jxr_keyword">return</strong> TSOProto.Transaction.newBuilder().setTimestamp(transaction.getTransactionId())
+<a class="jxr_linenumber" name="46" href="#46">46</a>                  .setReadTimestamp(transaction.getReadTimestamp())
+<a class="jxr_linenumber" name="47" href="#47">47</a>                  .setVisibilityLevel(transaction.getVisibilityLevel().ordinal())
+<a class="jxr_linenumber" name="48" href="#48">48</a>                  .setEpoch(transaction.getEpoch());
+<a class="jxr_linenumber" name="49" href="#49">49</a>      }
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>      @Override
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> Result get(Get get, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="53" href="#53">53</a>          get.setAttribute(CellUtils.TRANSACTION_ATTRIBUTE, getBuilder(transaction).build().toByteArray());
+<a class="jxr_linenumber" name="54" href="#54">54</a>          get.setAttribute(CellUtils.CLIENT_GET_ATTRIBUTE, Bytes.toBytes(<strong class="jxr_keyword">true</strong>));
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>          <strong class="jxr_keyword">return</strong> table.get(get);
+<a class="jxr_linenumber" name="57" href="#57">57</a>      }
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>      @Override
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> ResultScanner getScanner(Scan scan, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="61" href="#61">61</a>          scan.setAttribute(CellUtils.TRANSACTION_ATTRIBUTE, getBuilder(transaction).build().toByteArray());
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">return</strong> table.getScanner(scan);
+<a class="jxr_linenumber" name="64" href="#64">64</a>      }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      @Override
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">public</strong> List&lt;Cell&gt; filterCellsForSnapshot(List&lt;Cell&gt; rawCells, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction,
+<a class="jxr_linenumber" name="68" href="#68">68</a>                                        <strong class="jxr_keyword">int</strong> versionsToRequest, Map&lt;String, Long&gt; familyDeletionCache, Map&lt;String,byte[]&gt; attributeMap) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="69" href="#69">69</a>          <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException();
+<a class="jxr_linenumber" name="70" href="#70">70</a>      }
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isCommitted(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId, <strong class="jxr_keyword">long</strong> epoch) <strong class="jxr_keyword">throws</strong> TransactionException {
+<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException();
+<a class="jxr_linenumber" name="74" href="#74">74</a>      }
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">public</strong> CommitTimestamp locateCellCommitTimestamp(<strong class="jxr_keyword">long</strong> cellStartTimestamp, <strong class="jxr_keyword">long</strong> epoch,
+<a class="jxr_linenumber" name="77" href="#77">77</a>              <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> locator) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="78" href="#78">78</a>          <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException();        
+<a class="jxr_linenumber" name="79" href="#79">79</a>      }
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> Optional&lt;CommitTimestamp&gt; readCommitTimestampFromShadowCell(<strong class="jxr_keyword">long</strong> cellStartTimestamp, <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> locator)
+<a class="jxr_linenumber" name="82" href="#82">82</a>              <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException();                
+<a class="jxr_linenumber" name="84" href="#84">84</a>      }
+<a class="jxr_linenumber" name="85" href="#85">85</a>  }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/CellSkipFilter.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/CellSkipFilter.html b/xref/org/apache/omid/transaction/CellSkipFilter.html
new file mode 100644
index 0000000..35d5ccb
--- /dev/null
+++ b/xref/org/apache/omid/transaction/CellSkipFilter.html
@@ -0,0 +1,151 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>CellSkipFilter xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/CellSkipFilter.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.FilterBase;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> * {@link Filter} that encapsulates another {@link Filter}. It remembers the last {@link KeyValue}</em>
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * for which the underlying filter returned the {@link ReturnCode#NEXT_COL} or {@link ReturnCode#INCLUDE_AND_NEXT_COL},</em>
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * so that when {@link #filterKeyValue} is called again for the same {@link KeyValue} with different</em>
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * version, it returns {@link ReturnCode#NEXT_COL} directly without consulting the underlying {@link Filter}.</em>
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * Please see TEPHRA-169 for more details.</em>
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CellSkipFilter.html">CellSkipFilter</a> <strong class="jxr_keyword">extends</strong> FilterBase {
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Filter filter;
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <em class="jxr_comment">// remember the previous keyvalue processed by filter when the return code was NEXT_COL or INCLUDE_AND_NEXT_COL</em>
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> KeyValue skipColumn = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  
+<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/CellSkipFilter.html">CellSkipFilter</a>(Filter filter) {
+<a class="jxr_linenumber" name="43" href="#43">43</a>          <strong class="jxr_keyword">this</strong>.filter = filter;
+<a class="jxr_linenumber" name="44" href="#44">44</a>      }
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment">     * Determines whether the current cell should be skipped. The cell will be skipped</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment">     * if the previous keyvalue had the same key as the current cell. This means filter already responded</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     * for the previous keyvalue with ReturnCode.NEXT_COL or ReturnCode.INCLUDE_AND_NEXT_COL.</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * @param cell the {@link Cell} to be tested for skipping</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     * @return true is current cell should be skipped, false otherwise</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> skipCellVersion(Cell cell) {
+<a class="jxr_linenumber" name="54" href="#54">54</a>          <strong class="jxr_keyword">return</strong> skipColumn != <strong class="jxr_keyword">null</strong>
+<a class="jxr_linenumber" name="55" href="#55">55</a>                  &amp;&amp; Bytes.equals(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),
+<a class="jxr_linenumber" name="56" href="#56">56</a>                  skipColumn.getRowArray(), skipColumn.getRowOffset(), skipColumn.getRowLength())
+<a class="jxr_linenumber" name="57" href="#57">57</a>                  &amp;&amp; Bytes.equals(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),
+<a class="jxr_linenumber" name="58" href="#58">58</a>                  skipColumn.getFamilyArray(), skipColumn.getFamilyOffset(), skipColumn.getFamilyLength())
+<a class="jxr_linenumber" name="59" href="#59">59</a>                  &amp;&amp; Bytes.equals(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength(),
+<a class="jxr_linenumber" name="60" href="#60">60</a>                  skipColumn.getQualifierArray(), skipColumn.getQualifierOffset(), skipColumn.getQualifierLength());
+<a class="jxr_linenumber" name="61" href="#61">61</a>      }
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>      @Override
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">public</strong> ReturnCode filterKeyValue(Cell cell) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="65" href="#65">65</a>          <strong class="jxr_keyword">if</strong> (skipCellVersion(cell)) {
+<a class="jxr_linenumber" name="66" href="#66">66</a>              <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="67" href="#67">67</a>          }
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>          ReturnCode code = filter.filterKeyValue(cell);
+<a class="jxr_linenumber" name="70" href="#70">70</a>          <strong class="jxr_keyword">if</strong> (code == ReturnCode.NEXT_COL || code == ReturnCode.INCLUDE_AND_NEXT_COL) {
+<a class="jxr_linenumber" name="71" href="#71">71</a>              <em class="jxr_comment">// only store the reference to the keyvalue if we are returning NEXT_COL or INCLUDE_AND_NEXT_COL</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>              skipColumn = <strong class="jxr_keyword">new</strong> KeyValue(cell.getRowArray(),cell.getRowOffset(),cell.getRowLength(),cell.getFamilyArray(),
+<a class="jxr_linenumber" name="73" href="#73">73</a>                      cell.getFamilyOffset(),cell.getFamilyLength(),cell.getQualifierArray(),
+<a class="jxr_linenumber" name="74" href="#74">74</a>                      cell.getQualifierOffset(), cell.getQualifierLength(),9223372036854775807L,
+<a class="jxr_linenumber" name="75" href="#75">75</a>                      KeyValue.Type.Maximum, (byte[])<strong class="jxr_keyword">null</strong>, 0, 0);
+<a class="jxr_linenumber" name="76" href="#76">76</a>          } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="77" href="#77">77</a>              skipColumn = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="78" href="#78">78</a>          }
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">return</strong> code;
+<a class="jxr_linenumber" name="80" href="#80">80</a>      }
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>      @Override
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterRow() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="84" href="#84">84</a>          <strong class="jxr_keyword">return</strong> filter.filterRow();
+<a class="jxr_linenumber" name="85" href="#85">85</a>      }
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>      @Override
+<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">public</strong> Cell transformCell(Cell cell) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="89" href="#89">89</a>          <strong class="jxr_keyword">return</strong> filter.transformCell(cell);
+<a class="jxr_linenumber" name="90" href="#90">90</a>      }
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>      @Override
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reset() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="94" href="#94">94</a>          filter.reset();
+<a class="jxr_linenumber" name="95" href="#95">95</a>      }
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>      @Override
+<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterRowKey(byte[] buffer, <strong class="jxr_keyword">int</strong> offset, <strong class="jxr_keyword">int</strong> length) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">return</strong> filter.filterRowKey(buffer, offset, length);
+<a class="jxr_linenumber" name="100" href="#100">100</a>     }
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>     @Override
+<a class="jxr_linenumber" name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterAllRemaining() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">return</strong> filter.filterAllRemaining();
+<a class="jxr_linenumber" name="105" href="#105">105</a>     }
+<a class="jxr_linenumber" name="106" href="#106">106</a> 
+<a class="jxr_linenumber" name="107" href="#107">107</a>     @Override
+<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> filterRowCells(List&lt;Cell&gt; kvs) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="109" href="#109">109</a>         filter.filterRowCells(kvs);
+<a class="jxr_linenumber" name="110" href="#110">110</a>     }
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>     @Override
+<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasFilterRow() {
+<a class="jxr_linenumber" name="114" href="#114">114</a>         <strong class="jxr_keyword">return</strong> filter.hasFilterRow();
+<a class="jxr_linenumber" name="115" href="#115">115</a>     }
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a>     @SuppressWarnings(<span class="jxr_string">"deprecation"</span>)
+<a class="jxr_linenumber" name="118" href="#118">118</a>     @Override
+<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">public</strong> KeyValue getNextKeyHint(KeyValue currentKV) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="120" href="#120">120</a>         <strong class="jxr_keyword">return</strong> filter.getNextKeyHint(currentKV);
+<a class="jxr_linenumber" name="121" href="#121">121</a>     }
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>     @Override
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> Cell getNextCellHint(Cell currentKV) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="125" href="#125">125</a>         <strong class="jxr_keyword">return</strong> filter.getNextCellHint(currentKV);
+<a class="jxr_linenumber" name="126" href="#126">126</a>     }
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>     @Override
+<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isFamilyEssential(byte[] name) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="130" href="#130">130</a>         <strong class="jxr_keyword">return</strong> filter.isFamilyEssential(name);
+<a class="jxr_linenumber" name="131" href="#131">131</a>     }
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>     @Override
+<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">public</strong> byte[] toByteArray() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="135" href="#135">135</a>         <strong class="jxr_keyword">return</strong> filter.toByteArray();
+<a class="jxr_linenumber" name="136" href="#136">136</a>     }
+<a class="jxr_linenumber" name="137" href="#137">137</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/CellSkipFilterBase.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/CellSkipFilterBase.html b/xref/org/apache/omid/transaction/CellSkipFilterBase.html
new file mode 100644
index 0000000..b7800e7
--- /dev/null
+++ b/xref/org/apache/omid/transaction/CellSkipFilterBase.html
@@ -0,0 +1,150 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>CellSkipFilterBase xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/CellSkipFilterBase.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValueUtil;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.OmidFilterBase;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * {@link Filter} that encapsulates another {@link Filter}. It remembers the last {@link KeyValue}</em>
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * for which the underlying filter returned the {@link ReturnCode#NEXT_COL} or {@link ReturnCode#INCLUDE_AND_NEXT_COL},</em>
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * so that when {@link #filterKeyValue} is called again for the same {@link KeyValue} with different</em>
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * version, it returns {@link ReturnCode#NEXT_COL} directly without consulting the underlying {@link Filter}.</em>
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * Please see TEPHRA-169 for more details.</em>
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CellSkipFilterBase.html">CellSkipFilterBase</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/OmidFilterBase.html">OmidFilterBase</a> {
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Filter filter;
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <em class="jxr_comment">// remember the previous keyvalue processed by filter when the return code was NEXT_COL or INCLUDE_AND_NEXT_COL</em>
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> KeyValue skipColumn = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/CellSkipFilterBase.html">CellSkipFilterBase</a>(Filter filter) {
+<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">this</strong>.filter = filter;
+<a class="jxr_linenumber" name="45" href="#45">45</a>      }
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment">     * Determines whether the current cell should be skipped. The cell will be skipped</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     * if the previous keyvalue had the same key as the current cell. This means filter already responded</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * for the previous keyvalue with ReturnCode.NEXT_COL or ReturnCode.INCLUDE_AND_NEXT_COL.</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     * @param cell the {@link Cell} to be tested for skipping</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment">     * @return true is current cell should be skipped, false otherwise</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> skipCellVersion(Cell cell) {
+<a class="jxr_linenumber" name="55" href="#55">55</a>          <strong class="jxr_keyword">return</strong> skipColumn != <strong class="jxr_keyword">null</strong>
+<a class="jxr_linenumber" name="56" href="#56">56</a>          &amp;&amp; CellUtil.matchingRow(cell, skipColumn.getRowArray(), skipColumn.getRowOffset(),
+<a class="jxr_linenumber" name="57" href="#57">57</a>                  skipColumn.getRowLength())
+<a class="jxr_linenumber" name="58" href="#58">58</a>                  &amp;&amp; CellUtil.matchingFamily(cell, skipColumn.getFamilyArray(), skipColumn.getFamilyOffset(),
+<a class="jxr_linenumber" name="59" href="#59">59</a>                  skipColumn.getFamilyLength())
+<a class="jxr_linenumber" name="60" href="#60">60</a>                  &amp;&amp; CellUtil.matchingQualifier(cell, skipColumn.getQualifierArray(), skipColumn.getQualifierOffset(),
+<a class="jxr_linenumber" name="61" href="#61">61</a>                  skipColumn.getQualifierLength());
+<a class="jxr_linenumber" name="62" href="#62">62</a>      }
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>      @Override
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> ReturnCode filterKeyValue(Cell cell) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="66" href="#66">66</a>          <strong class="jxr_keyword">if</strong> (skipCellVersion(cell)) {
+<a class="jxr_linenumber" name="67" href="#67">67</a>              <strong class="jxr_keyword">return</strong> ReturnCode.NEXT_COL;
+<a class="jxr_linenumber" name="68" href="#68">68</a>          }
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>          ReturnCode code = filter.filterKeyValue(cell);
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">if</strong> (code == ReturnCode.NEXT_COL || code == ReturnCode.INCLUDE_AND_NEXT_COL) {
+<a class="jxr_linenumber" name="72" href="#72">72</a>              <em class="jxr_comment">// only store the reference to the keyvalue if we are returning NEXT_COL or INCLUDE_AND_NEXT_COL</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>              skipColumn = KeyValueUtil.createFirstOnRow(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),
+<a class="jxr_linenumber" name="74" href="#74">74</a>                      cell.getFamilyArray(), cell.getFamilyOffset(),
+<a class="jxr_linenumber" name="75" href="#75">75</a>                      cell.getFamilyLength(), cell.getQualifierArray(),
+<a class="jxr_linenumber" name="76" href="#76">76</a>                      cell.getQualifierOffset(), cell.getQualifierLength());
+<a class="jxr_linenumber" name="77" href="#77">77</a>          } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="78" href="#78">78</a>              skipColumn = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="79" href="#79">79</a>          }
+<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">return</strong> code;
+<a class="jxr_linenumber" name="81" href="#81">81</a>      }
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>      @Override
+<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterRow() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">return</strong> filter.filterRow();
+<a class="jxr_linenumber" name="86" href="#86">86</a>      }
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>      @Override
+<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">public</strong> Cell transformCell(Cell cell) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="90" href="#90">90</a>          <strong class="jxr_keyword">return</strong> filter.transformCell(cell);
+<a class="jxr_linenumber" name="91" href="#91">91</a>      }
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>      @Override
+<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reset() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="95" href="#95">95</a>          filter.reset();
+<a class="jxr_linenumber" name="96" href="#96">96</a>      }
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>      @Override
+<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterRowKey(byte[] buffer, <strong class="jxr_keyword">int</strong> offset, <strong class="jxr_keyword">int</strong> length) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">return</strong> filter.filterRowKey(buffer, offset, length);
+<a class="jxr_linenumber" name="101" href="#101">101</a>     }
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>     @Override
+<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> filterAllRemaining() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="105" href="#105">105</a>         <strong class="jxr_keyword">return</strong> filter.filterAllRemaining();
+<a class="jxr_linenumber" name="106" href="#106">106</a>     }
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>     @Override
+<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> filterRowCells(List&lt;Cell&gt; kvs) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="110" href="#110">110</a>         filter.filterRowCells(kvs);
+<a class="jxr_linenumber" name="111" href="#111">111</a>     }
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>     @Override
+<a class="jxr_linenumber" name="114" href="#114">114</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasFilterRow() {
+<a class="jxr_linenumber" name="115" href="#115">115</a>         <strong class="jxr_keyword">return</strong> filter.hasFilterRow();
+<a class="jxr_linenumber" name="116" href="#116">116</a>     }
+<a class="jxr_linenumber" name="117" href="#117">117</a> 
+<a class="jxr_linenumber" name="118" href="#118">118</a>     @Override
+<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">public</strong> Cell getNextCellHint(Cell currentKV) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="120" href="#120">120</a>         <strong class="jxr_keyword">return</strong> filter.getNextCellHint(currentKV);
+<a class="jxr_linenumber" name="121" href="#121">121</a>     }
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>     @Override
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isFamilyEssential(byte[] name) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="125" href="#125">125</a>         <strong class="jxr_keyword">return</strong> filter.isFamilyEssential(name);
+<a class="jxr_linenumber" name="126" href="#126">126</a>     }
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>     @Override
+<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">public</strong> byte[] toByteArray() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="130" href="#130">130</a>         <strong class="jxr_keyword">return</strong> filter.toByteArray();
+<a class="jxr_linenumber" name="131" href="#131">131</a>     }
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">public</strong> Filter getInnerFilter() {
+<a class="jxr_linenumber" name="134" href="#134">134</a>         <strong class="jxr_keyword">return</strong> filter;
+<a class="jxr_linenumber" name="135" href="#135">135</a>     }
+<a class="jxr_linenumber" name="136" href="#136">136</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+



[33/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestSingleColumnFamily.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestSingleColumnFamily.html b/xref-test/org/apache/omid/transaction/TestSingleColumnFamily.html
index 61676e6..166d582 100644
--- a/xref-test/org/apache/omid/transaction/TestSingleColumnFamily.html
+++ b/xref-test/org/apache/omid/transaction/TestSingleColumnFamily.html
@@ -27,17 +27,17 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="31" href="#31">31</a>  
 <a class="jxr_linenumber" name="32" href="#32">32</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
 <a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestSingleColumnFamily.html">TestSingleColumnFamily</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
@@ -47,14 +47,14 @@
 <a class="jxr_linenumber" name="37" href="#37">37</a>      @Test(timeOut = 10_000)
 <a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSingleColumnFamily(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="39" href="#39">39</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="40" href="#40">40</a>          TTable table1 = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="40" href="#40">40</a>          TTable table1 = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="41" href="#41">41</a>          <strong class="jxr_keyword">int</strong> num = 10;
 <a class="jxr_linenumber" name="42" href="#42">42</a>          Transaction t = tm.begin();
 <a class="jxr_linenumber" name="43" href="#43">43</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = 0; j &lt; num; j++) {
 <a class="jxr_linenumber" name="44" href="#44">44</a>              byte[] data = Bytes.toBytes(j);
 <a class="jxr_linenumber" name="45" href="#45">45</a>              Put put = <strong class="jxr_keyword">new</strong> Put(data);
-<a class="jxr_linenumber" name="46" href="#46">46</a>              put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(<span class="jxr_string">"value1"</span>), data);
-<a class="jxr_linenumber" name="47" href="#47">47</a>              put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(<span class="jxr_string">"value2"</span>), data);
+<a class="jxr_linenumber" name="46" href="#46">46</a>              put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(<span class="jxr_string">"value1"</span>), data);
+<a class="jxr_linenumber" name="47" href="#47">47</a>              put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(<span class="jxr_string">"value2"</span>), data);
 <a class="jxr_linenumber" name="48" href="#48">48</a>              table1.put(t, put);
 <a class="jxr_linenumber" name="49" href="#49">49</a>          }
 <a class="jxr_linenumber" name="50" href="#50">50</a>          <em class="jxr_comment">//tm.tryCommit(t);</em>
@@ -78,7 +78,7 @@
 <a class="jxr_linenumber" name="68" href="#68">68</a>              byte[] data = Bytes.toBytes(j);
 <a class="jxr_linenumber" name="69" href="#69">69</a>              byte[] ndata = Bytes.toBytes(j * 10);
 <a class="jxr_linenumber" name="70" href="#70">70</a>              Put put = <strong class="jxr_keyword">new</strong> Put(data);
-<a class="jxr_linenumber" name="71" href="#71">71</a>              put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(<span class="jxr_string">"value2"</span>), ndata);
+<a class="jxr_linenumber" name="71" href="#71">71</a>              put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(<span class="jxr_string">"value2"</span>), ndata);
 <a class="jxr_linenumber" name="72" href="#72">72</a>              table1.put(t, put);
 <a class="jxr_linenumber" name="73" href="#73">73</a>          }
 <a class="jxr_linenumber" name="74" href="#74">74</a>          tm.commit(t);


[25/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/TestTimestampOracle.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/TestTimestampOracle.html b/xref-test/org/apache/omid/tso/TestTimestampOracle.html
index 57b5464..e9308dc 100644
--- a/xref-test/org/apache/omid/tso/TestTimestampOracle.html
+++ b/xref-test/org/apache/omid/tso/TestTimestampOracle.html
@@ -29,98 +29,101 @@
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.TimestampStorage;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.mockito.InjectMocks;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.mockito.Mock;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.mockito.MockitoAnnotations;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyString;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.atLeastOnce;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TestTimestampOracle.html">TestTimestampOracle</a> {
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTimestampOracle.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>      @Mock
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> MetricsRegistry metrics;
-<a class="jxr_linenumber" name="50" href="#50">50</a>      @Mock
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> Panicker panicker;
-<a class="jxr_linenumber" name="52" href="#52">52</a>      @Mock
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> TimestampStorage timestampStorage;
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <em class="jxr_comment">// Component under test</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>      @InjectMocks
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> TimestampOracleImpl timestampOracle;
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>      @BeforeMethod(alwaysRun = <strong class="jxr_keyword">true</strong>, timeOut = 30_000)
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> initMocksAndComponents() {
-<a class="jxr_linenumber" name="61" href="#61">61</a>          MockitoAnnotations.initMocks(<strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="62" href="#62">62</a>      }
-<a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMonotonicTimestampGrowth() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.AbstractTransactionManager;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.mockito.InjectMocks;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.mockito.Mock;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.mockito.MockitoAnnotations;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyString;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.atLeastOnce;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TestTimestampOracle.html">TestTimestampOracle</a> {
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTimestampOracle.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>      @Mock
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> MetricsRegistry metrics;
+<a class="jxr_linenumber" name="51" href="#51">51</a>      @Mock
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> Panicker panicker;
+<a class="jxr_linenumber" name="53" href="#53">53</a>      @Mock
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> TimestampStorage timestampStorage;
+<a class="jxr_linenumber" name="55" href="#55">55</a>      @Mock
+<a class="jxr_linenumber" name="56" href="#56">56</a>      TSOServerConfig config;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <em class="jxr_comment">// Component under test</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>      @InjectMocks
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> TimestampOracleImpl timestampOracle;
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      @BeforeMethod(alwaysRun = <strong class="jxr_keyword">true</strong>, timeOut = 30_000)
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> initMocksAndComponents() {
+<a class="jxr_linenumber" name="64" href="#64">64</a>          MockitoAnnotations.initMocks(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="65" href="#65">65</a>      }
 <a class="jxr_linenumber" name="66" href="#66">66</a>  
-<a class="jxr_linenumber" name="67" href="#67">67</a>          <em class="jxr_comment">// Intialize component under test</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>          timestampOracle.initialize();
+<a class="jxr_linenumber" name="67" href="#67">67</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMonotonicTimestampGrowth() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>          <strong class="jxr_keyword">long</strong> last = timestampOracle.next();
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; (3 * TimestampOracleImpl.TIMESTAMP_BATCH); i++) {
-<a class="jxr_linenumber" name="72" href="#72">72</a>              <strong class="jxr_keyword">long</strong> current = timestampOracle.next();
-<a class="jxr_linenumber" name="73" href="#73">73</a>              assertEquals(current, last + 1, <span class="jxr_string">"Not monotonic growth"</span>);
-<a class="jxr_linenumber" name="74" href="#74">74</a>              last = current;
-<a class="jxr_linenumber" name="75" href="#75">75</a>          }
-<a class="jxr_linenumber" name="76" href="#76">76</a>          assertTrue(timestampOracle.getLast() == last);
-<a class="jxr_linenumber" name="77" href="#77">77</a>          LOG.info(<span class="jxr_string">"Last timestamp: {}"</span>, last);
-<a class="jxr_linenumber" name="78" href="#78">78</a>      }
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestampOraclePanicsWhenTheStorageHasProblems() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="70" href="#70">70</a>          <em class="jxr_comment">// Intialize component under test</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>          timestampOracle.initialize();
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">long</strong> last = timestampOracle.next();
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; (3 * TimestampOracleImpl.TIMESTAMP_BATCH); i++) {
+<a class="jxr_linenumber" name="75" href="#75">75</a>              <strong class="jxr_keyword">long</strong> current = timestampOracle.next();
+<a class="jxr_linenumber" name="76" href="#76">76</a>              assertEquals(current, last + AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN, <span class="jxr_string">"Not monotonic growth"</span>);
+<a class="jxr_linenumber" name="77" href="#77">77</a>              last = current;
+<a class="jxr_linenumber" name="78" href="#78">78</a>          }
+<a class="jxr_linenumber" name="79" href="#79">79</a>          assertTrue(timestampOracle.getLast() == last);
+<a class="jxr_linenumber" name="80" href="#80">80</a>          LOG.info(<span class="jxr_string">"Last timestamp: {}"</span>, last);
+<a class="jxr_linenumber" name="81" href="#81">81</a>      }
 <a class="jxr_linenumber" name="82" href="#82">82</a>  
-<a class="jxr_linenumber" name="83" href="#83">83</a>          <em class="jxr_comment">// Intialize component under test</em>
-<a class="jxr_linenumber" name="84" href="#84">84</a>          timestampOracle.initialize();
+<a class="jxr_linenumber" name="83" href="#83">83</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestampOraclePanicsWhenTheStorageHasProblems() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>          <em class="jxr_comment">// Cause an exception when updating the max timestamp</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>          <strong class="jxr_keyword">final</strong> CountDownLatch updateMaxTimestampMethodCalled = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
-<a class="jxr_linenumber" name="88" href="#88">88</a>          doAnswer(<strong class="jxr_keyword">new</strong> Answer() {
-<a class="jxr_linenumber" name="89" href="#89">89</a>              @Override
-<a class="jxr_linenumber" name="90" href="#90">90</a>              <strong class="jxr_keyword">public</strong> Object answer(InvocationOnMock invocationOnMock) <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="91" href="#91">91</a>                  updateMaxTimestampMethodCalled.countDown();
-<a class="jxr_linenumber" name="92" href="#92">92</a>                  <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Out of memory or something"</span>);
-<a class="jxr_linenumber" name="93" href="#93">93</a>              }
-<a class="jxr_linenumber" name="94" href="#94">94</a>          }).when(timestampStorage).updateMaxTimestamp(anyLong(), anyLong());
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          <em class="jxr_comment">// Make the previous exception to be thrown</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>          Thread allocThread = <strong class="jxr_keyword">new</strong> Thread(<span class="jxr_string">"AllocThread"</span>) {
-<a class="jxr_linenumber" name="98" href="#98">98</a>              @Override
-<a class="jxr_linenumber" name="99" href="#99">99</a>              <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
-<a class="jxr_linenumber" name="100" href="#100">100</a>                 <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
-<a class="jxr_linenumber" name="101" href="#101">101</a>                     timestampOracle.next();
-<a class="jxr_linenumber" name="102" href="#102">102</a>                 }
-<a class="jxr_linenumber" name="103" href="#103">103</a>             }
-<a class="jxr_linenumber" name="104" href="#104">104</a>         };
-<a class="jxr_linenumber" name="105" href="#105">105</a>         allocThread.start();
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>         updateMaxTimestampMethodCalled.await();
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>         <em class="jxr_comment">// Verify that it has blown up</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a>         verify(panicker, atLeastOnce()).panic(anyString(), any(Throwable.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="111" href="#111">111</a>     }
-<a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a> }
+<a class="jxr_linenumber" name="86" href="#86">86</a>          <em class="jxr_comment">// Intialize component under test</em>
+<a class="jxr_linenumber" name="87" href="#87">87</a>          timestampOracle.initialize();
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>          <em class="jxr_comment">// Cause an exception when updating the max timestamp</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>          <strong class="jxr_keyword">final</strong> CountDownLatch updateMaxTimestampMethodCalled = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="91" href="#91">91</a>          doAnswer(<strong class="jxr_keyword">new</strong> Answer() {
+<a class="jxr_linenumber" name="92" href="#92">92</a>              @Override
+<a class="jxr_linenumber" name="93" href="#93">93</a>              <strong class="jxr_keyword">public</strong> Object answer(InvocationOnMock invocationOnMock) <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="94" href="#94">94</a>                  updateMaxTimestampMethodCalled.countDown();
+<a class="jxr_linenumber" name="95" href="#95">95</a>                  <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Out of memory or something"</span>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>              }
+<a class="jxr_linenumber" name="97" href="#97">97</a>          }).when(timestampStorage).updateMaxTimestamp(anyLong(), anyLong());
+<a class="jxr_linenumber" name="98" href="#98">98</a>  
+<a class="jxr_linenumber" name="99" href="#99">99</a>          <em class="jxr_comment">// Make the previous exception to be thrown</em>
+<a class="jxr_linenumber" name="100" href="#100">100</a>         Thread allocThread = <strong class="jxr_keyword">new</strong> Thread(<span class="jxr_string">"AllocThread"</span>) {
+<a class="jxr_linenumber" name="101" href="#101">101</a>             @Override
+<a class="jxr_linenumber" name="102" href="#102">102</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
+<a class="jxr_linenumber" name="103" href="#103">103</a>                 <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
+<a class="jxr_linenumber" name="104" href="#104">104</a>                     timestampOracle.next();
+<a class="jxr_linenumber" name="105" href="#105">105</a>                 }
+<a class="jxr_linenumber" name="106" href="#106">106</a>             }
+<a class="jxr_linenumber" name="107" href="#107">107</a>         };
+<a class="jxr_linenumber" name="108" href="#108">108</a>         allocThread.start();
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>         updateMaxTimestampMethodCalled.await();
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>         <em class="jxr_comment">// Verify that it has blown up</em>
+<a class="jxr_linenumber" name="113" href="#113">113</a>         verify(panicker, atLeastOnce()).panic(anyString(), any(Throwable.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="114" href="#114">114</a>     }
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/TestWorldTimeOracle.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/TestWorldTimeOracle.html b/xref-test/org/apache/omid/tso/TestWorldTimeOracle.html
new file mode 100644
index 0000000..5ee8d94
--- /dev/null
+++ b/xref-test/org/apache/omid/tso/TestWorldTimeOracle.html
@@ -0,0 +1,133 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TestWorldTimeOracle xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/testapidocs/org/apache/omid/tso/TestWorldTimeOracle.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.tso;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.TimestampStorage;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.mockito.InjectMocks;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.mockito.Mock;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.mockito.MockitoAnnotations;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyString;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.atLeastOnce;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TestWorldTimeOracle.html">TestWorldTimeOracle</a> {
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestWorldTimeOracle.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>      @Mock
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> MetricsRegistry metrics;
+<a class="jxr_linenumber" name="50" href="#50">50</a>      @Mock
+<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> Panicker panicker;
+<a class="jxr_linenumber" name="52" href="#52">52</a>      @Mock
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> TimestampStorage timestampStorage;
+<a class="jxr_linenumber" name="54" href="#54">54</a>      @Mock
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> TSOServerConfig config;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <em class="jxr_comment">// Component under test</em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>      @InjectMocks
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> WorldClockOracleImpl worldClockOracle;
+<a class="jxr_linenumber" name="60" href="#60">60</a>  
+<a class="jxr_linenumber" name="61" href="#61">61</a>      @BeforeMethod(alwaysRun = <strong class="jxr_keyword">true</strong>, timeOut = 30_000)
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> initMocksAndComponents() {
+<a class="jxr_linenumber" name="63" href="#63">63</a>          MockitoAnnotations.initMocks(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="64" href="#64">64</a>      }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMonotonicTimestampGrowth() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>          <em class="jxr_comment">// Intialize component under test</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>          worldClockOracle.initialize();
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">long</strong> last = worldClockOracle.next();
+<a class="jxr_linenumber" name="73" href="#73">73</a>          
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">int</strong> timestampIntervalSec = (<strong class="jxr_keyword">int</strong>) (WorldClockOracleImpl.TIMESTAMP_INTERVAL_MS / 1000) * 2;
+<a class="jxr_linenumber" name="75" href="#75">75</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; timestampIntervalSec; i++) {
+<a class="jxr_linenumber" name="76" href="#76">76</a>              <strong class="jxr_keyword">long</strong> current = worldClockOracle.next();
+<a class="jxr_linenumber" name="77" href="#77">77</a>              assertTrue(current &gt; last+1 , <span class="jxr_string">"Timestamp should be based on world time"</span>);
+<a class="jxr_linenumber" name="78" href="#78">78</a>              last = current;
+<a class="jxr_linenumber" name="79" href="#79">79</a>              Thread.sleep(1000);
+<a class="jxr_linenumber" name="80" href="#80">80</a>          }
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>          assertTrue(worldClockOracle.getLast() == last);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          LOG.info(<span class="jxr_string">"Last timestamp: {}"</span>, last);
+<a class="jxr_linenumber" name="84" href="#84">84</a>      }
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestampOraclePanicsWhenTheStorageHasProblems() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>          <em class="jxr_comment">// Intialize component under test</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>          worldClockOracle.initialize();
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>          <em class="jxr_comment">// Cause an exception when updating the max timestamp</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">final</strong> CountDownLatch updateMaxTimestampMethodCalled = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          doAnswer(<strong class="jxr_keyword">new</strong> Answer() {
+<a class="jxr_linenumber" name="95" href="#95">95</a>              @Override
+<a class="jxr_linenumber" name="96" href="#96">96</a>              <strong class="jxr_keyword">public</strong> Object answer(InvocationOnMock invocationOnMock) <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="97" href="#97">97</a>                  updateMaxTimestampMethodCalled.countDown();
+<a class="jxr_linenumber" name="98" href="#98">98</a>                  <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Out of memory or something"</span>);
+<a class="jxr_linenumber" name="99" href="#99">99</a>              }
+<a class="jxr_linenumber" name="100" href="#100">100</a>         }).when(timestampStorage).updateMaxTimestamp(anyLong(), anyLong());
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>         <em class="jxr_comment">// Make the previous exception to be thrown</em>
+<a class="jxr_linenumber" name="103" href="#103">103</a>         Thread allocThread = <strong class="jxr_keyword">new</strong> Thread(<span class="jxr_string">"AllocThread"</span>) {
+<a class="jxr_linenumber" name="104" href="#104">104</a>             @Override
+<a class="jxr_linenumber" name="105" href="#105">105</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
+<a class="jxr_linenumber" name="106" href="#106">106</a>                 <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
+<a class="jxr_linenumber" name="107" href="#107">107</a>                     worldClockOracle.next();
+<a class="jxr_linenumber" name="108" href="#108">108</a>                 }
+<a class="jxr_linenumber" name="109" href="#109">109</a>             }
+<a class="jxr_linenumber" name="110" href="#110">110</a>         };
+<a class="jxr_linenumber" name="111" href="#111">111</a>         allocThread.start();
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>         updateMaxTimestampMethodCalled.await();
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>         <em class="jxr_comment">// Verify that it has blown up</em>
+<a class="jxr_linenumber" name="116" href="#116">116</a>         verify(panicker, atLeastOnce()).panic(anyString(), any(Throwable.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="117" href="#117">117</a>     }
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+



[10/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/HBaseSyncPostCommitter.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/HBaseSyncPostCommitter.html b/xref/org/apache/omid/transaction/HBaseSyncPostCommitter.html
index adf59e9..987c093 100644
--- a/xref/org/apache/omid/transaction/HBaseSyncPostCommitter.html
+++ b/xref/org/apache/omid/transaction/HBaseSyncPostCommitter.html
@@ -27,112 +27,121 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Timer;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.metrics.MetricsUtils.name;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Timer;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
 <a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.metrics.MetricsUtils.name;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseSyncPostCommitter.html">HBaseSyncPostCommitter</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> {
-<a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseSyncPostCommitter.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics;
-<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> CommitTable.Client commitTableClient;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> commitTableUpdateTimer;
-<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> shadowCellsUpdateTimer;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseSyncPostCommitter.html">HBaseSyncPostCommitter</a>(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics, CommitTable.Client commitTableClient) {
-<a class="jxr_linenumber" name="47" href="#47">47</a>          <strong class="jxr_keyword">this</strong>.metrics = metrics;
-<a class="jxr_linenumber" name="48" href="#48">48</a>          <strong class="jxr_keyword">this</strong>.commitTableClient = commitTableClient;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>          <strong class="jxr_keyword">this</strong>.commitTableUpdateTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"commitTableUpdate"</span>, <span class="jxr_string">"latency"</span>));
-<a class="jxr_linenumber" name="51" href="#51">51</a>          <strong class="jxr_keyword">this</strong>.shadowCellsUpdateTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"shadowCellsUpdate"</span>, <span class="jxr_string">"latency"</span>));
-<a class="jxr_linenumber" name="52" href="#52">52</a>      }
-<a class="jxr_linenumber" name="53" href="#53">53</a>  
-<a class="jxr_linenumber" name="54" href="#54">54</a>      @Override
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; updateShadowCells(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) {
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>          SettableFuture&lt;Void&gt; updateSCFuture = SettableFuture.create();
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>          <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> tx = HBaseTransactionManager.enforceHBaseTransactionAsParam(transaction);
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>          shadowCellsUpdateTimer.start();
-<a class="jxr_linenumber" name="62" href="#62">62</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>              <em class="jxr_comment">// Add shadow cells</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>              <strong class="jxr_keyword">for</strong> (HBaseCellId cell : tx.getWriteSet()) {
-<a class="jxr_linenumber" name="66" href="#66">66</a>                  Put put = <strong class="jxr_keyword">new</strong> Put(cell.getRow());
-<a class="jxr_linenumber" name="67" href="#67">67</a>                  put.add(cell.getFamily(),
-<a class="jxr_linenumber" name="68" href="#68">68</a>                          CellUtils.addShadowCellSuffix(cell.getQualifier(), 0, cell.getQualifier().length),
-<a class="jxr_linenumber" name="69" href="#69">69</a>                          tx.getStartTimestamp(),
-<a class="jxr_linenumber" name="70" href="#70">70</a>                          Bytes.toBytes(tx.getCommitTimestamp()));
-<a class="jxr_linenumber" name="71" href="#71">71</a>                  <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="72" href="#72">72</a>                      cell.getTable().put(put);
-<a class="jxr_linenumber" name="73" href="#73">73</a>                  } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="74" href="#74">74</a>                      LOG.warn(<span class="jxr_string">"{}: Error inserting shadow cell {}"</span>, tx, cell, e);
-<a class="jxr_linenumber" name="75" href="#75">75</a>                      updateSCFuture.setException(
-<a class="jxr_linenumber" name="76" href="#76">76</a>                              <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(tx + <span class="jxr_string">": Error inserting shadow cell "</span> + cell, e));
-<a class="jxr_linenumber" name="77" href="#77">77</a>                  }
-<a class="jxr_linenumber" name="78" href="#78">78</a>              }
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseSyncPostCommitter.html">HBaseSyncPostCommitter</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> {
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseSyncPostCommitter.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics;
+<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> CommitTable.Client commitTableClient;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> commitTableUpdateTimer;
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> shadowCellsUpdateTimer;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseSyncPostCommitter.html">HBaseSyncPostCommitter</a>(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics, CommitTable.Client commitTableClient) {
+<a class="jxr_linenumber" name="48" href="#48">48</a>          <strong class="jxr_keyword">this</strong>.metrics = metrics;
+<a class="jxr_linenumber" name="49" href="#49">49</a>          <strong class="jxr_keyword">this</strong>.commitTableClient = commitTableClient;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>          <strong class="jxr_keyword">this</strong>.commitTableUpdateTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"commitTableUpdate"</span>, <span class="jxr_string">"latency"</span>));
+<a class="jxr_linenumber" name="52" href="#52">52</a>          <strong class="jxr_keyword">this</strong>.shadowCellsUpdateTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"shadowCellsUpdate"</span>, <span class="jxr_string">"latency"</span>));
+<a class="jxr_linenumber" name="53" href="#53">53</a>      }
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> addShadowCell(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> cell, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> tx, SettableFuture&lt;Void&gt; updateSCFuture) {
+<a class="jxr_linenumber" name="56" href="#56">56</a>          Put put = <strong class="jxr_keyword">new</strong> Put(cell.getRow());
+<a class="jxr_linenumber" name="57" href="#57">57</a>          put.addColumn(cell.getFamily(),
+<a class="jxr_linenumber" name="58" href="#58">58</a>                  CellUtils.addShadowCellSuffixPrefix(cell.getQualifier(), 0, cell.getQualifier().length),
+<a class="jxr_linenumber" name="59" href="#59">59</a>                  cell.getTimestamp(),
+<a class="jxr_linenumber" name="60" href="#60">60</a>                  Bytes.toBytes(tx.getCommitTimestamp()));
+<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="62" href="#62">62</a>              cell.getTable().getHTable().put(put);
+<a class="jxr_linenumber" name="63" href="#63">63</a>          } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="64" href="#64">64</a>              LOG.warn(<span class="jxr_string">"{}: Error inserting shadow cell {}"</span>, tx, cell, e);
+<a class="jxr_linenumber" name="65" href="#65">65</a>              updateSCFuture.setException(
+<a class="jxr_linenumber" name="66" href="#66">66</a>                      <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(tx + <span class="jxr_string">": Error inserting shadow cell "</span> + cell, e));
+<a class="jxr_linenumber" name="67" href="#67">67</a>          }
+<a class="jxr_linenumber" name="68" href="#68">68</a>      }
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>      @Override
+<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; updateShadowCells(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) {
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>          SettableFuture&lt;Void&gt; updateSCFuture = SettableFuture.create();
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>          <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> tx = HBaseTransactionManager.enforceHBaseTransactionAsParam(transaction);
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>          shadowCellsUpdateTimer.start();
+<a class="jxr_linenumber" name="78" href="#78">78</a>          <strong class="jxr_keyword">try</strong> {
 <a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>              <em class="jxr_comment">// Flush affected tables before returning to avoid loss of shadow cells updates when autoflush is disabled</em>
-<a class="jxr_linenumber" name="81" href="#81">81</a>              <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="82" href="#82">82</a>                  tx.flushTables();
-<a class="jxr_linenumber" name="83" href="#83">83</a>                  updateSCFuture.set(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="84" href="#84">84</a>              } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="85" href="#85">85</a>                  LOG.warn(<span class="jxr_string">"{}: Error while flushing writes"</span>, tx, e);
-<a class="jxr_linenumber" name="86" href="#86">86</a>                  updateSCFuture.setException(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(tx + <span class="jxr_string">": Error while flushing writes"</span>, e));
+<a class="jxr_linenumber" name="80" href="#80">80</a>              <em class="jxr_comment">// Add shadow cells</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>              <strong class="jxr_keyword">for</strong> (HBaseCellId cell : tx.getWriteSet()) {
+<a class="jxr_linenumber" name="82" href="#82">82</a>                  addShadowCell(cell, tx, updateSCFuture);
+<a class="jxr_linenumber" name="83" href="#83">83</a>              }
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>              <strong class="jxr_keyword">for</strong> (HBaseCellId cell : tx.getConflictFreeWriteSet()) {
+<a class="jxr_linenumber" name="86" href="#86">86</a>                  addShadowCell(cell, tx, updateSCFuture);
 <a class="jxr_linenumber" name="87" href="#87">87</a>              }
 <a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>          } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="90" href="#90">90</a>              shadowCellsUpdateTimer.stop();
-<a class="jxr_linenumber" name="91" href="#91">91</a>          }
-<a class="jxr_linenumber" name="92" href="#92">92</a>  
-<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">return</strong> updateSCFuture;
-<a class="jxr_linenumber" name="94" href="#94">94</a>  
-<a class="jxr_linenumber" name="95" href="#95">95</a>      }
-<a class="jxr_linenumber" name="96" href="#96">96</a>  
-<a class="jxr_linenumber" name="97" href="#97">97</a>      @Override
-<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; removeCommitTableEntry(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) {
-<a class="jxr_linenumber" name="99" href="#99">99</a>  
-<a class="jxr_linenumber" name="100" href="#100">100</a>         SettableFuture&lt;Void&gt; updateSCFuture = SettableFuture.create();
+<a class="jxr_linenumber" name="89" href="#89">89</a>              <em class="jxr_comment">// Flush affected tables before returning to avoid loss of shadow cells updates when autoflush is disabled</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>              <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="91" href="#91">91</a>                  tx.flushTables();
+<a class="jxr_linenumber" name="92" href="#92">92</a>                  updateSCFuture.set(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="93" href="#93">93</a>              } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="94" href="#94">94</a>                  LOG.warn(<span class="jxr_string">"{}: Error while flushing writes"</span>, tx, e);
+<a class="jxr_linenumber" name="95" href="#95">95</a>                  updateSCFuture.setException(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(tx + <span class="jxr_string">": Error while flushing writes"</span>, e));
+<a class="jxr_linenumber" name="96" href="#96">96</a>              }
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>          } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="99" href="#99">99</a>              shadowCellsUpdateTimer.stop();
+<a class="jxr_linenumber" name="100" href="#100">100</a>         }
 <a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> tx = HBaseTransactionManager.enforceHBaseTransactionAsParam(transaction);
+<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">return</strong> updateSCFuture;
 <a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>         commitTableUpdateTimer.start();
+<a class="jxr_linenumber" name="104" href="#104">104</a>     }
 <a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="107" href="#107">107</a>             commitTableClient.completeTransaction(tx.getStartTimestamp()).get();
-<a class="jxr_linenumber" name="108" href="#108">108</a>             updateSCFuture.set(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="109" href="#109">109</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
-<a class="jxr_linenumber" name="110" href="#110">110</a>             Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="111" href="#111">111</a>             LOG.warn(<span class="jxr_string">"{}: interrupted during commit table entry delete"</span>, tx, e);
-<a class="jxr_linenumber" name="112" href="#112">112</a>             updateSCFuture.setException(
-<a class="jxr_linenumber" name="113" href="#113">113</a>                     <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(tx + <span class="jxr_string">": interrupted during commit table entry delete"</span>));
-<a class="jxr_linenumber" name="114" href="#114">114</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
-<a class="jxr_linenumber" name="115" href="#115">115</a>             LOG.warn(<span class="jxr_string">"{}: can't remove commit table entry"</span>, tx, e);
-<a class="jxr_linenumber" name="116" href="#116">116</a>             updateSCFuture.setException(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(tx + <span class="jxr_string">": can't remove commit table entry"</span>));
-<a class="jxr_linenumber" name="117" href="#117">117</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="118" href="#118">118</a>             commitTableUpdateTimer.stop();
-<a class="jxr_linenumber" name="119" href="#119">119</a>         }
-<a class="jxr_linenumber" name="120" href="#120">120</a> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>         <strong class="jxr_keyword">return</strong> updateSCFuture;
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a>     }
-<a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a> }
+<a class="jxr_linenumber" name="106" href="#106">106</a>     @Override
+<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; removeCommitTableEntry(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) {
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>         SettableFuture&lt;Void&gt; updateSCFuture = SettableFuture.create();
+<a class="jxr_linenumber" name="110" href="#110">110</a> 
+<a class="jxr_linenumber" name="111" href="#111">111</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> tx = HBaseTransactionManager.enforceHBaseTransactionAsParam(transaction);
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>         commitTableUpdateTimer.start();
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="116" href="#116">116</a>             commitTableClient.completeTransaction(tx.getStartTimestamp()).get();
+<a class="jxr_linenumber" name="117" href="#117">117</a>             updateSCFuture.set(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="118" href="#118">118</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
+<a class="jxr_linenumber" name="119" href="#119">119</a>             Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="120" href="#120">120</a>             LOG.warn(<span class="jxr_string">"{}: interrupted during commit table entry delete"</span>, tx, e);
+<a class="jxr_linenumber" name="121" href="#121">121</a>             updateSCFuture.setException(
+<a class="jxr_linenumber" name="122" href="#122">122</a>                     <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(tx + <span class="jxr_string">": interrupted during commit table entry delete"</span>));
+<a class="jxr_linenumber" name="123" href="#123">123</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="124" href="#124">124</a>             LOG.warn(<span class="jxr_string">"{}: can't remove commit table entry"</span>, tx, e);
+<a class="jxr_linenumber" name="125" href="#125">125</a>             updateSCFuture.setException(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(tx + <span class="jxr_string">": can't remove commit table entry"</span>));
+<a class="jxr_linenumber" name="126" href="#126">126</a>         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="127" href="#127">127</a>             commitTableUpdateTimer.stop();
+<a class="jxr_linenumber" name="128" href="#128">128</a>         }
+<a class="jxr_linenumber" name="129" href="#129">129</a> 
+<a class="jxr_linenumber" name="130" href="#130">130</a>         <strong class="jxr_keyword">return</strong> updateSCFuture;
+<a class="jxr_linenumber" name="131" href="#131">131</a> 
+<a class="jxr_linenumber" name="132" href="#132">132</a>     }
+<a class="jxr_linenumber" name="133" href="#133">133</a> 
+<a class="jxr_linenumber" name="134" href="#134">134</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/HBaseTransaction.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/HBaseTransaction.html b/xref/org/apache/omid/transaction/HBaseTransaction.html
index 322292f..e7d76be 100644
--- a/xref/org/apache/omid/transaction/HBaseTransaction.html
+++ b/xref/org/apache/omid/transaction/HBaseTransaction.html
@@ -27,67 +27,84 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTableInterface;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> <strong class="jxr_keyword">extends</strong> AbstractTransaction&lt;HBaseCellId&gt; {
-<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseTransaction.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>      <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a>(<strong class="jxr_keyword">long</strong> transactionId, <strong class="jxr_keyword">long</strong> epoch, Set&lt;HBaseCellId&gt; writeSet, <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> tm) {
-<a class="jxr_linenumber" name="33" href="#33">33</a>          <strong class="jxr_keyword">super</strong>(transactionId, epoch, writeSet, tm);
-<a class="jxr_linenumber" name="34" href="#34">34</a>      }
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>      @Override
-<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> cleanup() {
-<a class="jxr_linenumber" name="38" href="#38">38</a>          Set&lt;HBaseCellId&gt; writeSet = getWriteSet();
-<a class="jxr_linenumber" name="39" href="#39">39</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> HBaseCellId cell : writeSet) {
-<a class="jxr_linenumber" name="40" href="#40">40</a>              Delete delete = <strong class="jxr_keyword">new</strong> Delete(cell.getRow());
-<a class="jxr_linenumber" name="41" href="#41">41</a>              delete.deleteColumn(cell.getFamily(), cell.getQualifier(), getStartTimestamp());
-<a class="jxr_linenumber" name="42" href="#42">42</a>              <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="43" href="#43">43</a>                  cell.getTable().delete(delete);
-<a class="jxr_linenumber" name="44" href="#44">44</a>              } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="45" href="#45">45</a>                  LOG.warn(<span class="jxr_string">"Failed cleanup cell {} for Tx {}. This issue has been ignored"</span>, cell, getTransactionId(), e);
-<a class="jxr_linenumber" name="46" href="#46">46</a>              }
-<a class="jxr_linenumber" name="47" href="#47">47</a>          }
-<a class="jxr_linenumber" name="48" href="#48">48</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="49" href="#49">49</a>              flushTables();
-<a class="jxr_linenumber" name="50" href="#50">50</a>          } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="51" href="#51">51</a>              LOG.warn(<span class="jxr_string">"Failed flushing tables for Tx {}"</span>, getTransactionId(), e);
-<a class="jxr_linenumber" name="52" href="#52">52</a>          }
-<a class="jxr_linenumber" name="53" href="#53">53</a>      }
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment">     * Flushes pending operations for tables touched by transaction</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment">     * @throws IOException in case of any I/O related issues</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> flushTables() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">for</strong> (HTableInterface writtenTable : getWrittenTables()) {
-<a class="jxr_linenumber" name="62" href="#62">62</a>              writtenTable.flushCommits();
-<a class="jxr_linenumber" name="63" href="#63">63</a>          }
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      }
-<a class="jxr_linenumber" name="66" href="#66">66</a>  
-<a class="jxr_linenumber" name="67" href="#67">67</a>      <em class="jxr_comment">// ****************************************************************************************************************</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <em class="jxr_comment">// Helper methods</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <em class="jxr_comment">// ****************************************************************************************************************</em>
-<a class="jxr_linenumber" name="70" href="#70">70</a>  
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> Set&lt;HTableInterface&gt; getWrittenTables() {
-<a class="jxr_linenumber" name="72" href="#72">72</a>          HashSet&lt;HBaseCellId&gt; writeSet = (HashSet&lt;HBaseCellId&gt;) getWriteSet();
-<a class="jxr_linenumber" name="73" href="#73">73</a>          Set&lt;HTableInterface&gt; tables = <strong class="jxr_keyword">new</strong> HashSet&lt;HTableInterface&gt;();
-<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">for</strong> (HBaseCellId cell : writeSet) {
-<a class="jxr_linenumber" name="75" href="#75">75</a>              tables.add(cell.getTable());
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> <strong class="jxr_keyword">extends</strong> AbstractTransaction&lt;HBaseCellId&gt; {
+<a class="jxr_linenumber" name="29" href="#29">29</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseTransaction.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a>(<strong class="jxr_keyword">long</strong> transactionId, <strong class="jxr_keyword">long</strong> epoch, Set&lt;HBaseCellId&gt; writeSet, Set&lt;HBaseCellId&gt; conflictFreeWriteSet, <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> tm) {
+<a class="jxr_linenumber" name="32" href="#32">32</a>          <strong class="jxr_keyword">super</strong>(transactionId, epoch, writeSet, conflictFreeWriteSet, tm);
+<a class="jxr_linenumber" name="33" href="#33">33</a>      }
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a>(<strong class="jxr_keyword">long</strong> transactionId, <strong class="jxr_keyword">long</strong> epoch, Set&lt;HBaseCellId&gt; writeSet, Set&lt;HBaseCellId&gt; conflictFreeWriteSet, <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> tm, <strong class="jxr_keyword">long</strong> readTimestamp, <strong class="jxr_keyword">long</strong> writeTimestamp) {
+<a class="jxr_linenumber" name="36" href="#36">36</a>          <strong class="jxr_keyword">super</strong>(transactionId, epoch, writeSet, conflictFreeWriteSet, tm, readTimestamp, writeTimestamp);
+<a class="jxr_linenumber" name="37" href="#37">37</a>      }
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a>(<strong class="jxr_keyword">long</strong> transactionId, <strong class="jxr_keyword">long</strong> readTimestamp, <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> visibilityLevel, <strong class="jxr_keyword">long</strong> epoch, Set&lt;HBaseCellId&gt; writeSet, Set&lt;HBaseCellId&gt; conflictFreeWriteSet, <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> tm) {
+<a class="jxr_linenumber" name="40" href="#40">40</a>          <strong class="jxr_keyword">super</strong>(transactionId, readTimestamp, visibilityLevel, epoch, writeSet, conflictFreeWriteSet, tm);
+<a class="jxr_linenumber" name="41" href="#41">41</a>      }
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> deleteCell(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> cell) {
+<a class="jxr_linenumber" name="44" href="#44">44</a>          Delete delete = <strong class="jxr_keyword">new</strong> Delete(cell.getRow());
+<a class="jxr_linenumber" name="45" href="#45">45</a>          delete.addColumn(cell.getFamily(), cell.getQualifier(), cell.getTimestamp());
+<a class="jxr_linenumber" name="46" href="#46">46</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="47" href="#47">47</a>              cell.getTable().getHTable().delete(delete);
+<a class="jxr_linenumber" name="48" href="#48">48</a>          } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="49" href="#49">49</a>              LOG.warn(<span class="jxr_string">"Failed cleanup cell {} for Tx {}. This issue has been ignored"</span>, cell, getTransactionId(), e);
+<a class="jxr_linenumber" name="50" href="#50">50</a>          }
+<a class="jxr_linenumber" name="51" href="#51">51</a>      }
+<a class="jxr_linenumber" name="52" href="#52">52</a>      @Override
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> cleanup() {
+<a class="jxr_linenumber" name="54" href="#54">54</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> HBaseCellId cell : getWriteSet()) {
+<a class="jxr_linenumber" name="55" href="#55">55</a>              deleteCell(cell);
+<a class="jxr_linenumber" name="56" href="#56">56</a>          }
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> HBaseCellId cell : getConflictFreeWriteSet()) {
+<a class="jxr_linenumber" name="59" href="#59">59</a>              deleteCell(cell);
+<a class="jxr_linenumber" name="60" href="#60">60</a>          }
+<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="62" href="#62">62</a>              flushTables();
+<a class="jxr_linenumber" name="63" href="#63">63</a>          } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="64" href="#64">64</a>              LOG.warn(<span class="jxr_string">"Failed flushing tables for Tx {}"</span>, getTransactionId(), e);
+<a class="jxr_linenumber" name="65" href="#65">65</a>          }
+<a class="jxr_linenumber" name="66" href="#66">66</a>      }
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <em class="jxr_javadoccomment">     * Flushes pending operations for tables touched by transaction</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * @throws IOException in case of any I/O related issues</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> flushTables() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">for</strong> (TTable writtenTable : getWrittenTables()) {
+<a class="jxr_linenumber" name="75" href="#75">75</a>              writtenTable.flushCommits();
 <a class="jxr_linenumber" name="76" href="#76">76</a>          }
-<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">return</strong> tables;
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
 <a class="jxr_linenumber" name="78" href="#78">78</a>      }
 <a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>  }
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <em class="jxr_comment">// ****************************************************************************************************************</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <em class="jxr_comment">// Helper methods</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <em class="jxr_comment">// ****************************************************************************************************************</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">private</strong> Set&lt;TTable&gt; getWrittenTables() {
+<a class="jxr_linenumber" name="85" href="#85">85</a>          HashSet&lt;HBaseCellId&gt; writeSet = (HashSet&lt;HBaseCellId&gt;) getWriteSet();
+<a class="jxr_linenumber" name="86" href="#86">86</a>          Set&lt;TTable&gt; tables = <strong class="jxr_keyword">new</strong> HashSet&lt;TTable&gt;();
+<a class="jxr_linenumber" name="87" href="#87">87</a>          <strong class="jxr_keyword">for</strong> (HBaseCellId cell : writeSet) {
+<a class="jxr_linenumber" name="88" href="#88">88</a>              tables.add(cell.getTable());
+<a class="jxr_linenumber" name="89" href="#89">89</a>          }
+<a class="jxr_linenumber" name="90" href="#90">90</a>          writeSet = (HashSet&lt;HBaseCellId&gt;) getConflictFreeWriteSet();
+<a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">for</strong> (HBaseCellId cell : writeSet) {
+<a class="jxr_linenumber" name="92" href="#92">92</a>              tables.add(cell.getTable());
+<a class="jxr_linenumber" name="93" href="#93">93</a>          }
+<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">return</strong> tables;
+<a class="jxr_linenumber" name="95" href="#95">95</a>      }
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/HBaseTransactionClient.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/HBaseTransactionClient.html b/xref/org/apache/omid/transaction/HBaseTransactionClient.html
index 0af3d4a..979cba2 100644
--- a/xref/org/apache/omid/transaction/HBaseTransactionClient.html
+++ b/xref/org/apache/omid/transaction/HBaseTransactionClient.html
@@ -28,10 +28,8 @@
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">interface</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionClient.html">HBaseTransactionClient</a> {
-<a class="jxr_linenumber" name="21" href="#21">21</a>      <strong class="jxr_keyword">boolean</strong> isCommitted(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId) <strong class="jxr_keyword">throws</strong> TransactionException;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  
-<a class="jxr_linenumber" name="23" href="#23">23</a>      <strong class="jxr_keyword">long</strong> getLowWatermark() <strong class="jxr_keyword">throws</strong> TransactionException;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  }
+<a class="jxr_linenumber" name="21" href="#21">21</a>      <strong class="jxr_keyword">long</strong> getLowWatermark() <strong class="jxr_keyword">throws</strong> TransactionException;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[09/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/HBaseTransactionManager.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/HBaseTransactionManager.html b/xref/org/apache/omid/transaction/HBaseTransactionManager.html
index e603ebb..a1d107c 100644
--- a/xref/org/apache/omid/transaction/HBaseTransactionManager.html
+++ b/xref/org/apache/omid/transaction/HBaseTransactionManager.html
@@ -27,280 +27,267 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.annotations.VisibleForTesting;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Maps;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListeningExecutorService;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.MoreExecutors;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ThreadFactoryBuilder;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTable;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.HBaseLogin;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOProtocol;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTable;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.HBaseLogin;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConflictDetectionLevel;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListeningExecutorService;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.MoreExecutors;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ThreadFactoryBuilder;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionManager</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionClient.html">HBaseTransactionClient</a> {
 <a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionManager</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionClient.html">HBaseTransactionClient</a> {
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseTransactionManager.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseTransactionManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionFactory</a> <strong class="jxr_keyword">implements</strong> TransactionFactory&lt;HBaseCellId&gt; {
 <a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionFactory</a> <strong class="jxr_keyword">implements</strong> TransactionFactory&lt;HBaseCellId&gt; {
-<a class="jxr_linenumber" name="51" href="#51">51</a>  
-<a class="jxr_linenumber" name="52" href="#52">52</a>          @Override
-<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> createTransaction(<strong class="jxr_keyword">long</strong> transactionId, <strong class="jxr_keyword">long</strong> epoch, <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> tm) {
+<a class="jxr_linenumber" name="50" href="#50">50</a>          @Override
+<a class="jxr_linenumber" name="51" href="#51">51</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> createTransaction(<strong class="jxr_keyword">long</strong> transactionId, <strong class="jxr_keyword">long</strong> epoch, <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> tm) {
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a>(transactionId, epoch, <strong class="jxr_keyword">new</strong> HashSet&lt;HBaseCellId&gt;(), <strong class="jxr_keyword">new</strong> HashSet&lt;HBaseCellId&gt;(), tm);
 <a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a>(transactionId, epoch, <strong class="jxr_keyword">new</strong> HashSet&lt;HBaseCellId&gt;(), tm);
+<a class="jxr_linenumber" name="55" href="#55">55</a>          }
 <a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>          }
+<a class="jxr_linenumber" name="57" href="#57">57</a>      }
 <a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>      }
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <em class="jxr_comment">// Construction</em>
 <a class="jxr_linenumber" name="61" href="#61">61</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <em class="jxr_comment">// Construction</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/TransactionManager.html">TransactionManager</a> newInstance() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="66" href="#66">66</a>          <strong class="jxr_keyword">return</strong> newInstance(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>());
-<a class="jxr_linenumber" name="67" href="#67">67</a>      }
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/TransactionManager.html">TransactionManager</a> newInstance(<a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> configuration)
-<a class="jxr_linenumber" name="70" href="#70">70</a>              <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <em class="jxr_comment">//Logging in to Secure HBase if required</em>
-<a class="jxr_linenumber" name="72" href="#72">72</a>          HBaseLogin.loginIfNeeded(configuration);
-<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">return</strong> builder(configuration).build();
-<a class="jxr_linenumber" name="74" href="#74">74</a>      }
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/TransactionManager.html">TransactionManager</a> newInstance() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">return</strong> newInstance(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>());
+<a class="jxr_linenumber" name="65" href="#65">65</a>      }
+<a class="jxr_linenumber" name="66" href="#66">66</a>  
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/TransactionManager.html">TransactionManager</a> newInstance(<a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> configuration)
+<a class="jxr_linenumber" name="68" href="#68">68</a>              <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="69" href="#69">69</a>          <em class="jxr_comment">//Logging in to Secure HBase if required</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>          HBaseLogin.loginIfNeeded(configuration);
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">return</strong> builder(configuration).build();
+<a class="jxr_linenumber" name="72" href="#72">72</a>      }
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> {
 <a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>      @VisibleForTesting
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> {
+<a class="jxr_linenumber" name="76" href="#76">76</a>          <em class="jxr_comment">// Required parameters</em>
+<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> hbaseOmidClientConf;
 <a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>          <em class="jxr_comment">// Required parameters</em>
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> hbaseOmidClientConf;
-<a class="jxr_linenumber" name="81" href="#81">81</a>  
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <em class="jxr_comment">// Optional parameters - initialized to default values</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">private</strong> Optional&lt;TSOProtocol&gt; tsoClient = Optional.absent();
-<a class="jxr_linenumber" name="84" href="#84">84</a>          <strong class="jxr_keyword">private</strong> Optional&lt;CommitTable.Client&gt; commitTableClient = Optional.absent();
-<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">private</strong> Optional&lt;PostCommitActions&gt; postCommitter = Optional.absent();
-<a class="jxr_linenumber" name="86" href="#86">86</a>  
-<a class="jxr_linenumber" name="87" href="#87">87</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a>(<a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> hbaseOmidClientConf) {
-<a class="jxr_linenumber" name="88" href="#88">88</a>              <strong class="jxr_keyword">this</strong>.hbaseOmidClientConf = hbaseOmidClientConf;
-<a class="jxr_linenumber" name="89" href="#89">89</a>          }
-<a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> tsoClient(<a href="../../../../org/apache/omid/tso/client/TSOProtocol.html">TSOProtocol</a> tsoClient) {
-<a class="jxr_linenumber" name="92" href="#92">92</a>              <strong class="jxr_keyword">this</strong>.tsoClient = Optional.of(tsoClient);
-<a class="jxr_linenumber" name="93" href="#93">93</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="94" href="#94">94</a>          }
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> commitTableClient(CommitTable.Client client) {
-<a class="jxr_linenumber" name="97" href="#97">97</a>              <strong class="jxr_keyword">this</strong>.commitTableClient = Optional.of(client);
-<a class="jxr_linenumber" name="98" href="#98">98</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="99" href="#99">99</a>          }
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> postCommitter(<a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter) {
-<a class="jxr_linenumber" name="102" href="#102">102</a>             <strong class="jxr_keyword">this</strong>.postCommitter = Optional.of(postCommitter);
-<a class="jxr_linenumber" name="103" href="#103">103</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="104" href="#104">104</a>         }
-<a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionManager</a> build() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="107" href="#107">107</a> 
-<a class="jxr_linenumber" name="108" href="#108">108</a>             CommitTable.Client commitTableClient = <strong class="jxr_keyword">this</strong>.commitTableClient.or(buildCommitTableClient()).get();
-<a class="jxr_linenumber" name="109" href="#109">109</a>             <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter = <strong class="jxr_keyword">this</strong>.postCommitter.or(buildPostCommitter(commitTableClient)).get();
-<a class="jxr_linenumber" name="110" href="#110">110</a>             <a href="../../../../org/apache/omid/tso/client/TSOProtocol.html">TSOProtocol</a> tsoClient = <strong class="jxr_keyword">this</strong>.tsoClient.or(buildTSOClient()).get();
-<a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionManager</a>(hbaseOmidClientConf,
-<a class="jxr_linenumber" name="113" href="#113">113</a>                                                postCommitter,
-<a class="jxr_linenumber" name="114" href="#114">114</a>                                                tsoClient,
-<a class="jxr_linenumber" name="115" href="#115">115</a>                                                commitTableClient,
-<a class="jxr_linenumber" name="116" href="#116">116</a>                                                <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionFactory</a>());
-<a class="jxr_linenumber" name="117" href="#117">117</a>         }
-<a class="jxr_linenumber" name="118" href="#118">118</a> 
-<a class="jxr_linenumber" name="119" href="#119">119</a>         <strong class="jxr_keyword">private</strong> Optional&lt;TSOProtocol&gt; buildTSOClient() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="120" href="#120">120</a>             <strong class="jxr_keyword">return</strong> Optional.of((TSOProtocol) TSOClient.newInstance(hbaseOmidClientConf.getOmidClientConfiguration()));
-<a class="jxr_linenumber" name="121" href="#121">121</a>         }
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a> 
-<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">private</strong> Optional&lt;CommitTable.Client&gt; buildCommitTableClient() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="125" href="#125">125</a>             <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> commitTableConf = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a>();
-<a class="jxr_linenumber" name="126" href="#126">126</a>             commitTableConf.setTableName(hbaseOmidClientConf.getCommitTableName());
-<a class="jxr_linenumber" name="127" href="#127">127</a>             <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> commitTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(hbaseOmidClientConf.getHBaseConfiguration(), commitTableConf);
-<a class="jxr_linenumber" name="128" href="#128">128</a>             <strong class="jxr_keyword">return</strong> Optional.of(commitTable.getClient());
-<a class="jxr_linenumber" name="129" href="#129">129</a>         }
-<a class="jxr_linenumber" name="130" href="#130">130</a> 
-<a class="jxr_linenumber" name="131" href="#131">131</a>         <strong class="jxr_keyword">private</strong> Optional&lt;PostCommitActions&gt; buildPostCommitter(CommitTable.Client commitTableClient ) {
-<a class="jxr_linenumber" name="132" href="#132">132</a> 
-<a class="jxr_linenumber" name="133" href="#133">133</a>             <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter;
-<a class="jxr_linenumber" name="134" href="#134">134</a>             <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> syncPostCommitter = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseSyncPostCommitter.html">HBaseSyncPostCommitter</a>(hbaseOmidClientConf.getMetrics(),
-<a class="jxr_linenumber" name="135" href="#135">135</a>                                                                              commitTableClient);
-<a class="jxr_linenumber" name="136" href="#136">136</a>             <strong class="jxr_keyword">switch</strong>(hbaseOmidClientConf.getPostCommitMode()) {
-<a class="jxr_linenumber" name="137" href="#137">137</a>                 <strong class="jxr_keyword">case</strong> ASYNC:
-<a class="jxr_linenumber" name="138" href="#138">138</a>                     ListeningExecutorService postCommitExecutor =
-<a class="jxr_linenumber" name="139" href="#139">139</a>                             MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor(
-<a class="jxr_linenumber" name="140" href="#140">140</a>                                     <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"postCommit-%d"</span>).build()));
-<a class="jxr_linenumber" name="141" href="#141">141</a>                     postCommitter = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseAsyncPostCommitter.html">HBaseAsyncPostCommitter</a>(syncPostCommitter, postCommitExecutor);
-<a class="jxr_linenumber" name="142" href="#142">142</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="143" href="#143">143</a>                 <strong class="jxr_keyword">case</strong> SYNC:
-<a class="jxr_linenumber" name="144" href="#144">144</a>                 <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="145" href="#145">145</a>                     postCommitter = syncPostCommitter;
-<a class="jxr_linenumber" name="146" href="#146">146</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="147" href="#147">147</a>             }
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <em class="jxr_comment">// Optional parameters - initialized to default values</em>
+<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">private</strong> Optional&lt;TSOClient&gt; tsoClient = Optional.absent();
+<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">private</strong> Optional&lt;CommitTable.Client&gt; commitTableClient = Optional.absent();
+<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">private</strong> Optional&lt;PostCommitActions&gt; postCommitter = Optional.absent();
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>          <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a>(<a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> hbaseOmidClientConf) {
+<a class="jxr_linenumber" name="85" href="#85">85</a>              <strong class="jxr_keyword">this</strong>.hbaseOmidClientConf = hbaseOmidClientConf;
+<a class="jxr_linenumber" name="86" href="#86">86</a>          }
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> tsoClient(<a href="../../../../org/apache/omid/tso/client/TSOClient.html">TSOClient</a> tsoClient) {
+<a class="jxr_linenumber" name="89" href="#89">89</a>              <strong class="jxr_keyword">this</strong>.tsoClient = Optional.of(tsoClient);
+<a class="jxr_linenumber" name="90" href="#90">90</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="91" href="#91">91</a>          }
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> commitTableClient(CommitTable.Client client) {
+<a class="jxr_linenumber" name="94" href="#94">94</a>              <strong class="jxr_keyword">this</strong>.commitTableClient = Optional.of(client);
+<a class="jxr_linenumber" name="95" href="#95">95</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="96" href="#96">96</a>          }
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> postCommitter(<a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter) {
+<a class="jxr_linenumber" name="99" href="#99">99</a>              <strong class="jxr_keyword">this</strong>.postCommitter = Optional.of(postCommitter);
+<a class="jxr_linenumber" name="100" href="#100">100</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="101" href="#101">101</a>         }
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionManager</a> build() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="104" href="#104">104</a> 
+<a class="jxr_linenumber" name="105" href="#105">105</a>             CommitTable.Client commitTableClient = <strong class="jxr_keyword">this</strong>.commitTableClient.or(buildCommitTableClient()).get();
+<a class="jxr_linenumber" name="106" href="#106">106</a>             <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter = <strong class="jxr_keyword">this</strong>.postCommitter.or(buildPostCommitter(commitTableClient)).get();
+<a class="jxr_linenumber" name="107" href="#107">107</a>             <a href="../../../../org/apache/omid/tso/client/TSOClient.html">TSOClient</a> tsoClient = <strong class="jxr_keyword">this</strong>.tsoClient.or(buildTSOClient()).get();
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionManager</a>(hbaseOmidClientConf,
+<a class="jxr_linenumber" name="110" href="#110">110</a>                                                postCommitter,
+<a class="jxr_linenumber" name="111" href="#111">111</a>                                                tsoClient,
+<a class="jxr_linenumber" name="112" href="#112">112</a>                                                commitTableClient,
+<a class="jxr_linenumber" name="113" href="#113">113</a>                                                <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionFactory</a>());
+<a class="jxr_linenumber" name="114" href="#114">114</a>         }
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a>         <strong class="jxr_keyword">private</strong> Optional&lt;TSOClient&gt; buildTSOClient() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="117" href="#117">117</a>             <strong class="jxr_keyword">return</strong> Optional.of(TSOClient.newInstance(hbaseOmidClientConf.getOmidClientConfiguration()));
+<a class="jxr_linenumber" name="118" href="#118">118</a>         }
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a> 
+<a class="jxr_linenumber" name="121" href="#121">121</a>         <strong class="jxr_keyword">private</strong> Optional&lt;CommitTable.Client&gt; buildCommitTableClient() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="122" href="#122">122</a>             <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> commitTableConf = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a>();
+<a class="jxr_linenumber" name="123" href="#123">123</a>             commitTableConf.setTableName(hbaseOmidClientConf.getCommitTableName());
+<a class="jxr_linenumber" name="124" href="#124">124</a>             <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> commitTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(hbaseOmidClientConf.getHBaseConfiguration(), commitTableConf);
+<a class="jxr_linenumber" name="125" href="#125">125</a>             <strong class="jxr_keyword">return</strong> Optional.of(commitTable.getClient());
+<a class="jxr_linenumber" name="126" href="#126">126</a>         }
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>         <strong class="jxr_keyword">private</strong> Optional&lt;PostCommitActions&gt; buildPostCommitter(CommitTable.Client commitTableClient ) {
+<a class="jxr_linenumber" name="129" href="#129">129</a> 
+<a class="jxr_linenumber" name="130" href="#130">130</a>             <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter;
+<a class="jxr_linenumber" name="131" href="#131">131</a>             <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> syncPostCommitter = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseSyncPostCommitter.html">HBaseSyncPostCommitter</a>(hbaseOmidClientConf.getMetrics(),
+<a class="jxr_linenumber" name="132" href="#132">132</a>                                                                              commitTableClient);
+<a class="jxr_linenumber" name="133" href="#133">133</a>             <strong class="jxr_keyword">switch</strong>(hbaseOmidClientConf.getPostCommitMode()) {
+<a class="jxr_linenumber" name="134" href="#134">134</a>                 <strong class="jxr_keyword">case</strong> ASYNC:
+<a class="jxr_linenumber" name="135" href="#135">135</a>                     ListeningExecutorService postCommitExecutor =
+<a class="jxr_linenumber" name="136" href="#136">136</a>                             MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor(
+<a class="jxr_linenumber" name="137" href="#137">137</a>                                     <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"postCommit-%d"</span>).build()));
+<a class="jxr_linenumber" name="138" href="#138">138</a>                     postCommitter = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseAsyncPostCommitter.html">HBaseAsyncPostCommitter</a>(syncPostCommitter, postCommitExecutor);
+<a class="jxr_linenumber" name="139" href="#139">139</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="140" href="#140">140</a>                 <strong class="jxr_keyword">case</strong> SYNC:
+<a class="jxr_linenumber" name="141" href="#141">141</a>                 <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="142" href="#142">142</a>                     postCommitter = syncPostCommitter;
+<a class="jxr_linenumber" name="143" href="#143">143</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="144" href="#144">144</a>             }
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>             <strong class="jxr_keyword">return</strong> Optional.of(postCommitter);
+<a class="jxr_linenumber" name="147" href="#147">147</a>         }
 <a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>             <strong class="jxr_keyword">return</strong> Optional.of(postCommitter);
-<a class="jxr_linenumber" name="150" href="#150">150</a>         }
-<a class="jxr_linenumber" name="151" href="#151">151</a> 
-<a class="jxr_linenumber" name="152" href="#152">152</a>     }
-<a class="jxr_linenumber" name="153" href="#153">153</a> 
-<a class="jxr_linenumber" name="154" href="#154">154</a>     @VisibleForTesting
-<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> builder(<a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> hbaseOmidClientConf) {
-<a class="jxr_linenumber" name="156" href="#156">156</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a>(hbaseOmidClientConf);
-<a class="jxr_linenumber" name="157" href="#157">157</a>     }
-<a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionManager</a>(<a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> hBaseOmidClientConfiguration,
-<a class="jxr_linenumber" name="160" href="#160">160</a>                                     <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter,
-<a class="jxr_linenumber" name="161" href="#161">161</a>                                     <a href="../../../../org/apache/omid/tso/client/TSOProtocol.html">TSOProtocol</a> tsoClient,
-<a class="jxr_linenumber" name="162" href="#162">162</a>                                     CommitTable.Client commitTableClient,
-<a class="jxr_linenumber" name="163" href="#163">163</a>                                     <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionFactory</a> hBaseTransactionFactory) {
-<a class="jxr_linenumber" name="164" href="#164">164</a> 
-<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">super</strong>(hBaseOmidClientConfiguration.getMetrics(),
-<a class="jxr_linenumber" name="166" href="#166">166</a>               postCommitter,
-<a class="jxr_linenumber" name="167" href="#167">167</a>               tsoClient,
-<a class="jxr_linenumber" name="168" href="#168">168</a>               commitTableClient,
-<a class="jxr_linenumber" name="169" href="#169">169</a>               hBaseTransactionFactory);
-<a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>     }
+<a class="jxr_linenumber" name="149" href="#149">149</a>     }
+<a class="jxr_linenumber" name="150" href="#150">150</a> 
+<a class="jxr_linenumber" name="151" href="#151">151</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a> builder(<a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> hbaseOmidClientConf) {
+<a class="jxr_linenumber" name="152" href="#152">152</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">Builder</a>(hbaseOmidClientConf);
+<a class="jxr_linenumber" name="153" href="#153">153</a>     }
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionManager</a>(<a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> hBaseOmidClientConfiguration,
+<a class="jxr_linenumber" name="156" href="#156">156</a>                                     <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter,
+<a class="jxr_linenumber" name="157" href="#157">157</a>                                     <a href="../../../../org/apache/omid/tso/client/TSOClient.html">TSOClient</a> tsoClient,
+<a class="jxr_linenumber" name="158" href="#158">158</a>                                     CommitTable.Client commitTableClient,
+<a class="jxr_linenumber" name="159" href="#159">159</a>                                     <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">HBaseTransactionFactory</a> hBaseTransactionFactory) {
+<a class="jxr_linenumber" name="160" href="#160">160</a> 
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">super</strong>(hBaseOmidClientConfiguration.getMetrics(),
+<a class="jxr_linenumber" name="162" href="#162">162</a>               postCommitter,
+<a class="jxr_linenumber" name="163" href="#163">163</a>               tsoClient,
+<a class="jxr_linenumber" name="164" href="#164">164</a>               commitTableClient,
+<a class="jxr_linenumber" name="165" href="#165">165</a>               hBaseTransactionFactory);
+<a class="jxr_linenumber" name="166" href="#166">166</a> 
+<a class="jxr_linenumber" name="167" href="#167">167</a>     }
+<a class="jxr_linenumber" name="168" href="#168">168</a> 
+<a class="jxr_linenumber" name="169" href="#169">169</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <em class="jxr_comment">// AbstractTransactionManager overwritten methods</em>
+<a class="jxr_linenumber" name="171" href="#171">171</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
 <a class="jxr_linenumber" name="172" href="#172">172</a> 
-<a class="jxr_linenumber" name="173" href="#173">173</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="174" href="#174">174</a>     <em class="jxr_comment">// AbstractTransactionManager overwritten methods</em>
-<a class="jxr_linenumber" name="175" href="#175">175</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="176" href="#176">176</a> 
-<a class="jxr_linenumber" name="177" href="#177">177</a>     @Override
-<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preCommit(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {
-<a class="jxr_linenumber" name="179" href="#179">179</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="180" href="#180">180</a>             <em class="jxr_comment">// Flush all pending writes</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a>             <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hBaseTx = enforceHBaseTransactionAsParam(transaction);
-<a class="jxr_linenumber" name="182" href="#182">182</a>             hBaseTx.flushTables();
-<a class="jxr_linenumber" name="183" href="#183">183</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="184" href="#184">184</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(<span class="jxr_string">"Exception while flushing writes"</span>, e);
-<a class="jxr_linenumber" name="185" href="#185">185</a>         }
-<a class="jxr_linenumber" name="186" href="#186">186</a>     }
-<a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>     @Override
-<a class="jxr_linenumber" name="189" href="#189">189</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preRollback(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {
-<a class="jxr_linenumber" name="190" href="#190">190</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="191" href="#191">191</a>             <em class="jxr_comment">// Flush all pending writes</em>
-<a class="jxr_linenumber" name="192" href="#192">192</a>             <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hBaseTx = enforceHBaseTransactionAsParam(transaction);
-<a class="jxr_linenumber" name="193" href="#193">193</a>             hBaseTx.flushTables();
-<a class="jxr_linenumber" name="194" href="#194">194</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="195" href="#195">195</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(<span class="jxr_string">"Exception while flushing writes"</span>, e);
-<a class="jxr_linenumber" name="196" href="#196">196</a>         }
-<a class="jxr_linenumber" name="197" href="#197">197</a>     }
-<a class="jxr_linenumber" name="198" href="#198">198</a> 
-<a class="jxr_linenumber" name="199" href="#199">199</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="200" href="#200">200</a>     <em class="jxr_comment">// HBaseTransactionClient method implementations</em>
-<a class="jxr_linenumber" name="201" href="#201">201</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="202" href="#202">202</a> 
-<a class="jxr_linenumber" name="203" href="#203">203</a>     @Override
-<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isCommitted(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId) <strong class="jxr_keyword">throws</strong> TransactionException {
-<a class="jxr_linenumber" name="205" href="#205">205</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="206" href="#206">206</a>             <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> tentativeCommitTimestamp =
-<a class="jxr_linenumber" name="207" href="#207">207</a>                     locateCellCommitTimestamp(hBaseCellId.getTimestamp(), tsoClient.getEpoch(),
-<a class="jxr_linenumber" name="208" href="#208">208</a>                                               <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">CommitTimestampLocatorImpl</a>(hBaseCellId, Maps.&lt;Long, Long&gt;newHashMap()));
-<a class="jxr_linenumber" name="209" href="#209">209</a> 
-<a class="jxr_linenumber" name="210" href="#210">210</a>             <em class="jxr_comment">// If transaction that added the cell was invalidated</em>
-<a class="jxr_linenumber" name="211" href="#211">211</a>             <strong class="jxr_keyword">if</strong> (!tentativeCommitTimestamp.isValid()) {
-<a class="jxr_linenumber" name="212" href="#212">212</a>                 <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="213" href="#213">213</a>             }
-<a class="jxr_linenumber" name="214" href="#214">214</a> 
-<a class="jxr_linenumber" name="215" href="#215">215</a>             <strong class="jxr_keyword">switch</strong> (tentativeCommitTimestamp.getLocation()) {
-<a class="jxr_linenumber" name="216" href="#216">216</a>                 <strong class="jxr_keyword">case</strong> COMMIT_TABLE:
-<a class="jxr_linenumber" name="217" href="#217">217</a>                 <strong class="jxr_keyword">case</strong> SHADOW_CELL:
-<a class="jxr_linenumber" name="218" href="#218">218</a>                     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="219" href="#219">219</a>                 <strong class="jxr_keyword">case</strong> NOT_PRESENT:
-<a class="jxr_linenumber" name="220" href="#220">220</a>                     <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="221" href="#221">221</a>                 <strong class="jxr_keyword">case</strong> CACHE: <em class="jxr_comment">// cache was empty</em>
-<a class="jxr_linenumber" name="222" href="#222">222</a>                 <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="223" href="#223">223</a>                     <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="224" href="#224">224</a>             }
-<a class="jxr_linenumber" name="225" href="#225">225</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="226" href="#226">226</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Failure while checking if a transaction was committed"</span>, e);
-<a class="jxr_linenumber" name="227" href="#227">227</a>         }
-<a class="jxr_linenumber" name="228" href="#228">228</a>     }
-<a class="jxr_linenumber" name="229" href="#229">229</a> 
-<a class="jxr_linenumber" name="230" href="#230">230</a>     @Override
-<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getLowWatermark() <strong class="jxr_keyword">throws</strong> TransactionException {
-<a class="jxr_linenumber" name="232" href="#232">232</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="233" href="#233">233</a>             <strong class="jxr_keyword">return</strong> commitTableClient.readLowWatermark().get();
-<a class="jxr_linenumber" name="234" href="#234">234</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
-<a class="jxr_linenumber" name="235" href="#235">235</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Error reading low watermark"</span>, ee.getCause());
-<a class="jxr_linenumber" name="236" href="#236">236</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
-<a class="jxr_linenumber" name="237" href="#237">237</a>             Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="238" href="#238">238</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Interrupted reading low watermark"</span>, ie);
-<a class="jxr_linenumber" name="239" href="#239">239</a>         }
-<a class="jxr_linenumber" name="240" href="#240">240</a>     }
-<a class="jxr_linenumber" name="241" href="#241">241</a> 
-<a class="jxr_linenumber" name="242" href="#242">242</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="243" href="#243">243</a>     <em class="jxr_comment">// Helper methods</em>
-<a class="jxr_linenumber" name="244" href="#244">244</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="245" href="#245">245</a> 
-<a class="jxr_linenumber" name="246" href="#246">246</a>     <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> enforceHBaseTransactionAsParam(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx) {
-<a class="jxr_linenumber" name="247" href="#247">247</a> 
-<a class="jxr_linenumber" name="248" href="#248">248</a>         <strong class="jxr_keyword">if</strong> (tx instanceof HBaseTransaction) {
-<a class="jxr_linenumber" name="249" href="#249">249</a>             <strong class="jxr_keyword">return</strong> (HBaseTransaction) tx;
-<a class="jxr_linenumber" name="250" href="#250">250</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="251" href="#251">251</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
-<a class="jxr_linenumber" name="252" href="#252">252</a>                     <span class="jxr_string">"The transaction object passed is not an instance of HBaseTransaction"</span>);
-<a class="jxr_linenumber" name="253" href="#253">253</a>         }
-<a class="jxr_linenumber" name="254" href="#254">254</a> 
-<a class="jxr_linenumber" name="255" href="#255">255</a>     }
-<a class="jxr_linenumber" name="256" href="#256">256</a> 
-<a class="jxr_linenumber" name="257" href="#257">257</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">CommitTimestampLocatorImpl</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> {
-<a class="jxr_linenumber" name="258" href="#258">258</a> 
-<a class="jxr_linenumber" name="259" href="#259">259</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId;
-<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;Long, Long&gt; commitCache;
+<a class="jxr_linenumber" name="173" href="#173">173</a>     @Override
+<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preCommit(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {
+<a class="jxr_linenumber" name="175" href="#175">175</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="176" href="#176">176</a>             <em class="jxr_comment">// Flush all pending writes</em>
+<a class="jxr_linenumber" name="177" href="#177">177</a>             <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hBaseTx = enforceHBaseTransactionAsParam(transaction);
+<a class="jxr_linenumber" name="178" href="#178">178</a>             hBaseTx.flushTables();
+<a class="jxr_linenumber" name="179" href="#179">179</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="180" href="#180">180</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(<span class="jxr_string">"Exception while flushing writes"</span>, e);
+<a class="jxr_linenumber" name="181" href="#181">181</a>         }
+<a class="jxr_linenumber" name="182" href="#182">182</a>     }
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>     @Override
+<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preRollback(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {
+<a class="jxr_linenumber" name="186" href="#186">186</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="187" href="#187">187</a>             <em class="jxr_comment">// Flush all pending writes</em>
+<a class="jxr_linenumber" name="188" href="#188">188</a>             <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hBaseTx = enforceHBaseTransactionAsParam(transaction);
+<a class="jxr_linenumber" name="189" href="#189">189</a>             hBaseTx.flushTables();
+<a class="jxr_linenumber" name="190" href="#190">190</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="191" href="#191">191</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionManagerException.html">TransactionManagerException</a>(<span class="jxr_string">"Exception while flushing writes"</span>, e);
+<a class="jxr_linenumber" name="192" href="#192">192</a>         }
+<a class="jxr_linenumber" name="193" href="#193">193</a>     }
+<a class="jxr_linenumber" name="194" href="#194">194</a> 
+<a class="jxr_linenumber" name="195" href="#195">195</a>     @Override
+<a class="jxr_linenumber" name="196" href="#196">196</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getHashForTable(byte[] tableName) {
+<a class="jxr_linenumber" name="197" href="#197">197</a>         <strong class="jxr_keyword">return</strong> HBaseCellId.getHasher().putBytes(tableName).hash().asLong();
+<a class="jxr_linenumber" name="198" href="#198">198</a>     }
+<a class="jxr_linenumber" name="199" href="#199">199</a> 
+<a class="jxr_linenumber" name="200" href="#200">200</a>     @Override
+<a class="jxr_linenumber" name="201" href="#201">201</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getLowWatermark() <strong class="jxr_keyword">throws</strong> TransactionException {
+<a class="jxr_linenumber" name="202" href="#202">202</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="203" href="#203">203</a>             <strong class="jxr_keyword">return</strong> commitTableClient.readLowWatermark().get();
+<a class="jxr_linenumber" name="204" href="#204">204</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="205" href="#205">205</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Error reading low watermark"</span>, ee.getCause());
+<a class="jxr_linenumber" name="206" href="#206">206</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
+<a class="jxr_linenumber" name="207" href="#207">207</a>             Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="208" href="#208">208</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Interrupted reading low watermark"</span>, ie);
+<a class="jxr_linenumber" name="209" href="#209">209</a>         }
+<a class="jxr_linenumber" name="210" href="#210">210</a>     }
+<a class="jxr_linenumber" name="211" href="#211">211</a> 
+<a class="jxr_linenumber" name="212" href="#212">212</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="213" href="#213">213</a>     <em class="jxr_comment">// Helper methods</em>
+<a class="jxr_linenumber" name="214" href="#214">214</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>     <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> enforceHBaseTransactionAsParam(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx) {
+<a class="jxr_linenumber" name="217" href="#217">217</a> 
+<a class="jxr_linenumber" name="218" href="#218">218</a>         <strong class="jxr_keyword">if</strong> (tx instanceof HBaseTransaction) {
+<a class="jxr_linenumber" name="219" href="#219">219</a>             <strong class="jxr_keyword">return</strong> (HBaseTransaction) tx;
+<a class="jxr_linenumber" name="220" href="#220">220</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="221" href="#221">221</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
+<a class="jxr_linenumber" name="222" href="#222">222</a>                     <span class="jxr_string">"The transaction object passed is not an instance of HBaseTransaction"</span>);
+<a class="jxr_linenumber" name="223" href="#223">223</a>         }
+<a class="jxr_linenumber" name="224" href="#224">224</a> 
+<a class="jxr_linenumber" name="225" href="#225">225</a>     }
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setConflictDetectionLevel(<a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">ConflictDetectionLevel</a> conflictDetectionLevel) {
+<a class="jxr_linenumber" name="228" href="#228">228</a>         tsoClient.setConflictDetectionLevel(conflictDetectionLevel);
+<a class="jxr_linenumber" name="229" href="#229">229</a>     }
+<a class="jxr_linenumber" name="230" href="#230">230</a> 
+<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">ConflictDetectionLevel</a> getConflictDetectionLevel() {
+<a class="jxr_linenumber" name="232" href="#232">232</a>         <strong class="jxr_keyword">return</strong> tsoClient.getConflictDetectionLevel();
+<a class="jxr_linenumber" name="233" href="#233">233</a>     }
+<a class="jxr_linenumber" name="234" href="#234">234</a> 
+<a class="jxr_linenumber" name="235" href="#235">235</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">CommitTimestampLocatorImpl</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> {
+<a class="jxr_linenumber" name="236" href="#236">236</a> 
+<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId;
+<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;Long, Long&gt; commitCache;
+<a class="jxr_linenumber" name="239" href="#239">239</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> tableAccessWrapper;
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">CommitTimestampLocatorImpl</a>(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId, Map&lt;Long, Long&gt; commitCache, <a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> tableAccessWrapper) {
+<a class="jxr_linenumber" name="242" href="#242">242</a>             <strong class="jxr_keyword">this</strong>.hBaseCellId = hBaseCellId;
+<a class="jxr_linenumber" name="243" href="#243">243</a>             <strong class="jxr_keyword">this</strong>.commitCache = commitCache;
+<a class="jxr_linenumber" name="244" href="#244">244</a>             <strong class="jxr_keyword">this</strong>.tableAccessWrapper = tableAccessWrapper;
+<a class="jxr_linenumber" name="245" href="#245">245</a>         }
+<a class="jxr_linenumber" name="246" href="#246">246</a> 
+<a class="jxr_linenumber" name="247" href="#247">247</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">CommitTimestampLocatorImpl</a>(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId, Map&lt;Long, Long&gt; commitCache) {
+<a class="jxr_linenumber" name="248" href="#248">248</a>             <strong class="jxr_keyword">this</strong>.hBaseCellId = hBaseCellId;
+<a class="jxr_linenumber" name="249" href="#249">249</a>             <strong class="jxr_keyword">this</strong>.commitCache = commitCache;
+<a class="jxr_linenumber" name="250" href="#250">250</a>             <strong class="jxr_keyword">this</strong>.tableAccessWrapper = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="251" href="#251">251</a>             <strong class="jxr_keyword">this</strong>.tableAccessWrapper = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HTableAccessWrapper.html">HTableAccessWrapper</a>(hBaseCellId.getTable().getHTable(), hBaseCellId.getTable().getHTable());
+<a class="jxr_linenumber" name="252" href="#252">252</a>         }
+<a class="jxr_linenumber" name="253" href="#253">253</a> 
+<a class="jxr_linenumber" name="254" href="#254">254</a>         @Override
+<a class="jxr_linenumber" name="255" href="#255">255</a>         <strong class="jxr_keyword">public</strong> Optional&lt;Long&gt; readCommitTimestampFromCache(<strong class="jxr_keyword">long</strong> startTimestamp) {
+<a class="jxr_linenumber" name="256" href="#256">256</a>             <strong class="jxr_keyword">if</strong> (commitCache.containsKey(startTimestamp)) {
+<a class="jxr_linenumber" name="257" href="#257">257</a>                 <strong class="jxr_keyword">return</strong> Optional.of(commitCache.get(startTimestamp));
+<a class="jxr_linenumber" name="258" href="#258">258</a>             }
+<a class="jxr_linenumber" name="259" href="#259">259</a>             <strong class="jxr_keyword">return</strong> Optional.absent();
+<a class="jxr_linenumber" name="260" href="#260">260</a>         }
 <a class="jxr_linenumber" name="261" href="#261">261</a> 
-<a class="jxr_linenumber" name="262" href="#262">262</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransactionManager.html">CommitTimestampLocatorImpl</a>(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId, Map&lt;Long, Long&gt; commitCache) {
-<a class="jxr_linenumber" name="263" href="#263">263</a>             <strong class="jxr_keyword">this</strong>.hBaseCellId = hBaseCellId;
-<a class="jxr_linenumber" name="264" href="#264">264</a>             <strong class="jxr_keyword">this</strong>.commitCache = commitCache;
-<a class="jxr_linenumber" name="265" href="#265">265</a>         }
-<a class="jxr_linenumber" name="266" href="#266">266</a> 
-<a class="jxr_linenumber" name="267" href="#267">267</a>         @Override
-<a class="jxr_linenumber" name="268" href="#268">268</a>         <strong class="jxr_keyword">public</strong> Optional&lt;Long&gt; readCommitTimestampFromCache(<strong class="jxr_keyword">long</strong> startTimestamp) {
-<a class="jxr_linenumber" name="269" href="#269">269</a>             <strong class="jxr_keyword">if</strong> (commitCache.containsKey(startTimestamp)) {
-<a class="jxr_linenumber" name="270" href="#270">270</a>                 <strong class="jxr_keyword">return</strong> Optional.of(commitCache.get(startTimestamp));
-<a class="jxr_linenumber" name="271" href="#271">271</a>             }
-<a class="jxr_linenumber" name="272" href="#272">272</a>             <strong class="jxr_keyword">return</strong> Optional.absent();
-<a class="jxr_linenumber" name="273" href="#273">273</a>         }
-<a class="jxr_linenumber" name="274" href="#274">274</a> 
-<a class="jxr_linenumber" name="275" href="#275">275</a>         @Override
-<a class="jxr_linenumber" name="276" href="#276">276</a>         <strong class="jxr_keyword">public</strong> Optional&lt;Long&gt; readCommitTimestampFromShadowCell(<strong class="jxr_keyword">long</strong> startTimestamp) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="262" href="#262">262</a>         @Override
+<a class="jxr_linenumber" name="263" href="#263">263</a>         <strong class="jxr_keyword">public</strong> Optional&lt;Long&gt; readCommitTimestampFromShadowCell(<strong class="jxr_keyword">long</strong> startTimestamp) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="264" href="#264">264</a> 
+<a class="jxr_linenumber" name="265" href="#265">265</a>             Get get = <strong class="jxr_keyword">new</strong> Get(hBaseCellId.getRow());
+<a class="jxr_linenumber" name="266" href="#266">266</a>             byte[] family = hBaseCellId.getFamily();
+<a class="jxr_linenumber" name="267" href="#267">267</a>             byte[] shadowCellQualifier = CellUtils.addShadowCellSuffixPrefix(hBaseCellId.getQualifier());
+<a class="jxr_linenumber" name="268" href="#268">268</a>             get.addColumn(family, shadowCellQualifier);
+<a class="jxr_linenumber" name="269" href="#269">269</a>             get.setMaxVersions(1);
+<a class="jxr_linenumber" name="270" href="#270">270</a>             get.setTimeStamp(startTimestamp);
+<a class="jxr_linenumber" name="271" href="#271">271</a>             Result result = tableAccessWrapper.get(get);
+<a class="jxr_linenumber" name="272" href="#272">272</a>             <strong class="jxr_keyword">if</strong> (result.containsColumn(family, shadowCellQualifier)) {
+<a class="jxr_linenumber" name="273" href="#273">273</a>                 <strong class="jxr_keyword">return</strong> Optional.of(Bytes.toLong(result.getValue(family, shadowCellQualifier)));
+<a class="jxr_linenumber" name="274" href="#274">274</a>             }
+<a class="jxr_linenumber" name="275" href="#275">275</a>             <strong class="jxr_keyword">return</strong> Optional.absent();
+<a class="jxr_linenumber" name="276" href="#276">276</a>         }
 <a class="jxr_linenumber" name="277" href="#277">277</a> 
-<a class="jxr_linenumber" name="278" href="#278">278</a>             Get get = <strong class="jxr_keyword">new</strong> Get(hBaseCellId.getRow());
-<a class="jxr_linenumber" name="279" href="#279">279</a>             byte[] family = hBaseCellId.getFamily();
-<a class="jxr_linenumber" name="280" href="#280">280</a>             byte[] shadowCellQualifier = CellUtils.addShadowCellSuffix(hBaseCellId.getQualifier());
-<a class="jxr_linenumber" name="281" href="#281">281</a>             get.addColumn(family, shadowCellQualifier);
-<a class="jxr_linenumber" name="282" href="#282">282</a>             get.setMaxVersions(1);
-<a class="jxr_linenumber" name="283" href="#283">283</a>             get.setTimeStamp(startTimestamp);
-<a class="jxr_linenumber" name="284" href="#284">284</a>             Result result = hBaseCellId.getTable().get(get);
-<a class="jxr_linenumber" name="285" href="#285">285</a>             <strong class="jxr_keyword">if</strong> (result.containsColumn(family, shadowCellQualifier)) {
-<a class="jxr_linenumber" name="286" href="#286">286</a>                 <strong class="jxr_keyword">return</strong> Optional.of(Bytes.toLong(result.getValue(family, shadowCellQualifier)));
-<a class="jxr_linenumber" name="287" href="#287">287</a>             }
-<a class="jxr_linenumber" name="288" href="#288">288</a>             <strong class="jxr_keyword">return</strong> Optional.absent();
-<a class="jxr_linenumber" name="289" href="#289">289</a>         }
-<a class="jxr_linenumber" name="290" href="#290">290</a> 
-<a class="jxr_linenumber" name="291" href="#291">291</a>     }
-<a class="jxr_linenumber" name="292" href="#292">292</a> 
-<a class="jxr_linenumber" name="293" href="#293">293</a> }
+<a class="jxr_linenumber" name="278" href="#278">278</a>     }
+<a class="jxr_linenumber" name="279" href="#279">279</a> 
+<a class="jxr_linenumber" name="280" href="#280">280</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/HTableAccessWrapper.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/HTableAccessWrapper.html b/xref/org/apache/omid/transaction/HTableAccessWrapper.html
new file mode 100644
index 0000000..5ef8ced
--- /dev/null
+++ b/xref/org/apache/omid/transaction/HTableAccessWrapper.html
@@ -0,0 +1,77 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>HTableAccessWrapper xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/HTableAccessWrapper.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_comment">// This class wraps the HTableInterface object when doing client side filtering.</em>
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HTableAccessWrapper.html">HTableAccessWrapper</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> {
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Table writeTable;
+<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Table readTable;
+<a class="jxr_linenumber" name="37" href="#37">37</a>      
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HTableAccessWrapper.html">HTableAccessWrapper</a>(Table table, Table healerTable) {
+<a class="jxr_linenumber" name="39" href="#39">39</a>          <strong class="jxr_keyword">this</strong>.readTable = table;
+<a class="jxr_linenumber" name="40" href="#40">40</a>          <strong class="jxr_keyword">this</strong>.writeTable = healerTable;
+<a class="jxr_linenumber" name="41" href="#41">41</a>      }
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>      @Override
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">public</strong> Result[] get(List&lt;Get&gt; get) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="45" href="#45">45</a>          <strong class="jxr_keyword">return</strong> readTable.get(get);
+<a class="jxr_linenumber" name="46" href="#46">46</a>      }
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>      @Override
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">public</strong> Result get(Get get) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="50" href="#50">50</a>          <strong class="jxr_keyword">return</strong> readTable.get(get);
+<a class="jxr_linenumber" name="51" href="#51">51</a>      }
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>      @Override
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> put(Put put) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="55" href="#55">55</a>          writeTable.put(put);
+<a class="jxr_linenumber" name="56" href="#56">56</a>      }
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>      @Override
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> ResultScanner getScanner(Scan scan) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="60" href="#60">60</a>          <strong class="jxr_keyword">return</strong> readTable.getScanner(scan);
+<a class="jxr_linenumber" name="61" href="#61">61</a>      }
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>  }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+


[41/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestCompaction.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestCompaction.html b/xref-test/org/apache/omid/transaction/TestCompaction.html
index eeb18f9..0618d92 100644
--- a/xref-test/org/apache/omid/transaction/TestCompaction.html
+++ b/xref-test/org/apache/omid/transaction/TestCompaction.html
@@ -27,1181 +27,1188 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseTestingUtility;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.MiniHBaseCluster;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTable;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTableInterface;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Row;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.coprocessor.AggregationClient;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.HBaseShims;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig;
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterClass;
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> java.util.Random;
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
-<a class="jxr_linenumber" name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
-<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicBoolean;
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
-<a class="jxr_linenumber" name="71" href="#71">71</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
-<a class="jxr_linenumber" name="72" href="#72">72</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
-<a class="jxr_linenumber" name="73" href="#73">73</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doThrow;
-<a class="jxr_linenumber" name="74" href="#74">74</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="75" href="#75">75</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="76" href="#76">76</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="77" href="#77">77</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
-<a class="jxr_linenumber" name="78" href="#78">78</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="79" href="#79">79</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestCompaction.html">TestCompaction</a> {
-<a class="jxr_linenumber" name="82" href="#82">82</a>  
-<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestCompaction.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY = <span class="jxr_string">"test-fam"</span>;
-<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_QUALIFIER = <span class="jxr_string">"test-qual"</span>;
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] fam = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] qual = Bytes.toBytes(TEST_QUALIFIER);
-<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] data = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_VERSIONS = 3;
-<a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">private</strong> Random randomGenerator;
-<a class="jxr_linenumber" name="95" href="#95">95</a>      <strong class="jxr_keyword">private</strong> AbstractTransactionManager tm;
-<a class="jxr_linenumber" name="96" href="#96">96</a>  
-<a class="jxr_linenumber" name="97" href="#97">97</a>      <strong class="jxr_keyword">private</strong> Injector injector;
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">private</strong> HBaseAdmin admin;
-<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">private</strong> Configuration hbaseConf;
-<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">private</strong> HBaseTestingUtility hbaseTestUtil;
-<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">private</strong> MiniHBaseCluster hbaseCluster;
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">private</strong> TSOServer tso;
-<a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>     <strong class="jxr_keyword">private</strong> AggregationClient aggregationClient;
-<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">private</strong> CommitTable commitTable;
-<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">private</strong> PostCommitActions syncPostCommitter;
-<a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>     @BeforeClass
-<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setupTestCompation() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="112" href="#112">112</a>         TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="113" href="#113">113</a>         tsoConfig.setPort(1234);
-<a class="jxr_linenumber" name="114" href="#114">114</a>         tsoConfig.setConflictMapSize(1);
-<a class="jxr_linenumber" name="115" href="#115">115</a>         injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TSOForHBaseCompactorTestModule.html">TSOForHBaseCompactorTestModule</a>(tsoConfig));
-<a class="jxr_linenumber" name="116" href="#116">116</a>         hbaseConf = injector.getInstance(Configuration.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="117" href="#117">117</a>         HBaseCommitTableConfig hBaseCommitTableConfig = injector.getInstance(HBaseCommitTableConfig.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="118" href="#118">118</a>         HBaseTimestampStorageConfig hBaseTimestampStorageConfig = injector.getInstance(HBaseTimestampStorageConfig.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>         <em class="jxr_comment">// settings required for #testDuplicateDeletes()</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.hstore.compaction.min"</span>, 2);
-<a class="jxr_linenumber" name="122" href="#122">122</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.hstore.compaction.max"</span>, 2);
-<a class="jxr_linenumber" name="123" href="#123">123</a> 
-<a class="jxr_linenumber" name="124" href="#124">124</a>         setupHBase();
-<a class="jxr_linenumber" name="125" href="#125">125</a>         aggregationClient = <strong class="jxr_keyword">new</strong> AggregationClient(hbaseConf);
-<a class="jxr_linenumber" name="126" href="#126">126</a>         admin = <strong class="jxr_keyword">new</strong> HBaseAdmin(hbaseConf);
-<a class="jxr_linenumber" name="127" href="#127">127</a>         createRequiredHBaseTables(hBaseTimestampStorageConfig, hBaseCommitTableConfig);
-<a class="jxr_linenumber" name="128" href="#128">128</a>         setupTSO();
-<a class="jxr_linenumber" name="129" href="#129">129</a> 
-<a class="jxr_linenumber" name="130" href="#130">130</a>         commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="131" href="#131">131</a>     }
-<a class="jxr_linenumber" name="132" href="#132">132</a> 
-<a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setupHBase() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="134" href="#134">134</a>         LOG.info(<span class="jxr_string">"--------------------------------------------------------------------------------------------------"</span>);
-<a class="jxr_linenumber" name="135" href="#135">135</a>         LOG.info(<span class="jxr_string">"Setting up HBase"</span>);
-<a class="jxr_linenumber" name="136" href="#136">136</a>         LOG.info(<span class="jxr_string">"--------------------------------------------------------------------------------------------------"</span>);
-<a class="jxr_linenumber" name="137" href="#137">137</a>         hbaseTestUtil = <strong class="jxr_keyword">new</strong> HBaseTestingUtility(hbaseConf);
-<a class="jxr_linenumber" name="138" href="#138">138</a>         LOG.info(<span class="jxr_string">"--------------------------------------------------------------------------------------------------"</span>);
-<a class="jxr_linenumber" name="139" href="#139">139</a>         LOG.info(<span class="jxr_string">"Creating HBase MiniCluster"</span>);
-<a class="jxr_linenumber" name="140" href="#140">140</a>         LOG.info(<span class="jxr_string">"--------------------------------------------------------------------------------------------------"</span>);
-<a class="jxr_linenumber" name="141" href="#141">141</a>         hbaseCluster = hbaseTestUtil.startMiniCluster(1);
-<a class="jxr_linenumber" name="142" href="#142">142</a>     }
-<a class="jxr_linenumber" name="143" href="#143">143</a> 
-<a class="jxr_linenumber" name="144" href="#144">144</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createRequiredHBaseTables(HBaseTimestampStorageConfig timestampStorageConfig,
-<a class="jxr_linenumber" name="145" href="#145">145</a>                                            HBaseCommitTableConfig hBaseCommitTableConfig) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="146" href="#146">146</a>         createTableIfNotExists(timestampStorageConfig.getTableName(), timestampStorageConfig.getFamilyName().getBytes());
-<a class="jxr_linenumber" name="147" href="#147">147</a> 
-<a class="jxr_linenumber" name="148" href="#148">148</a>         createTableIfNotExists(hBaseCommitTableConfig.getTableName(), hBaseCommitTableConfig.getCommitTableFamily(), hBaseCommitTableConfig.getLowWatermarkFamily());
-<a class="jxr_linenumber" name="149" href="#149">149</a>     }
-<a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createTableIfNotExists(String tableName, byte[]... families) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="152" href="#152">152</a>         <strong class="jxr_keyword">if</strong> (!admin.tableExists(tableName)) {
-<a class="jxr_linenumber" name="153" href="#153">153</a>             LOG.info(<span class="jxr_string">"Creating {} table..."</span>, tableName);
-<a class="jxr_linenumber" name="154" href="#154">154</a>             HTableDescriptor desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(TableName.valueOf(tableName));
-<a class="jxr_linenumber" name="155" href="#155">155</a> 
-<a class="jxr_linenumber" name="156" href="#156">156</a>             <strong class="jxr_keyword">for</strong> (byte[] family : families) {
-<a class="jxr_linenumber" name="157" href="#157">157</a>                 HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(family);
-<a class="jxr_linenumber" name="158" href="#158">158</a>                 datafam.setMaxVersions(MAX_VERSIONS);
-<a class="jxr_linenumber" name="159" href="#159">159</a>                 desc.addFamily(datafam);
-<a class="jxr_linenumber" name="160" href="#160">160</a>             }
-<a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>             desc.addCoprocessor(<span class="jxr_string">"org.apache.hadoop.hbase.coprocessor.AggregateImplementation"</span>);
-<a class="jxr_linenumber" name="163" href="#163">163</a>             admin.createTable(desc);
-<a class="jxr_linenumber" name="164" href="#164">164</a>             <strong class="jxr_keyword">for</strong> (byte[] family : families) {
-<a class="jxr_linenumber" name="165" href="#165">165</a>                 CompactorUtil.enableOmidCompaction(hbaseConf, TableName.valueOf(tableName), family);
-<a class="jxr_linenumber" name="166" href="#166">166</a>             }
-<a class="jxr_linenumber" name="167" href="#167">167</a>         }
-<a class="jxr_linenumber" name="168" href="#168">168</a> 
-<a class="jxr_linenumber" name="169" href="#169">169</a>     }
-<a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setupTSO() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="172" href="#172">172</a>         tso = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="173" href="#173">173</a>         tso.startAndWait();
-<a class="jxr_linenumber" name="174" href="#174">174</a>         TestUtils.waitForSocketListening(<span class="jxr_string">"localhost"</span>, 1234, 100);
-<a class="jxr_linenumber" name="175" href="#175">175</a>         Thread.currentThread().setName(<span class="jxr_string">"UnitTest(s) thread"</span>);
-<a class="jxr_linenumber" name="176" href="#176">176</a>     }
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>     @AfterClass
-<a class="jxr_linenumber" name="179" href="#179">179</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> cleanupTestCompation() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="180" href="#180">180</a>         teardownTSO();
-<a class="jxr_linenumber" name="181" href="#181">181</a>         hbaseCluster.shutdown();
-<a class="jxr_linenumber" name="182" href="#182">182</a>     }
-<a class="jxr_linenumber" name="183" href="#183">183</a> 
-<a class="jxr_linenumber" name="184" href="#184">184</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> teardownTSO() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="185" href="#185">185</a>         tso.stopAndWait();
-<a class="jxr_linenumber" name="186" href="#186">186</a>         TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, 1234, 1000);
-<a class="jxr_linenumber" name="187" href="#187">187</a>     }
-<a class="jxr_linenumber" name="188" href="#188">188</a> 
-<a class="jxr_linenumber" name="189" href="#189">189</a>     @BeforeMethod
-<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setupTestCompactionIndividualTest() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="191" href="#191">191</a>         randomGenerator = <strong class="jxr_keyword">new</strong> Random(0xfeedcafeL);
-<a class="jxr_linenumber" name="192" href="#192">192</a>         tm = spy((AbstractTransactionManager) newTransactionManager());
-<a class="jxr_linenumber" name="193" href="#193">193</a>     }
-<a class="jxr_linenumber" name="194" href="#194">194</a> 
-<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">private</strong> TransactionManager newTransactionManager() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="196" href="#196">196</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="197" href="#197">197</a>         hbaseOmidClientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
-<a class="jxr_linenumber" name="198" href="#198">198</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="199" href="#199">199</a>         CommitTable.Client commitTableClient = commitTable.getClient();
-<a class="jxr_linenumber" name="200" href="#200">200</a>         syncPostCommitter =
-<a class="jxr_linenumber" name="201" href="#201">201</a>                 spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(),commitTableClient));
-<a class="jxr_linenumber" name="202" href="#202">202</a>         <strong class="jxr_keyword">return</strong> HBaseTransactionManager.builder(hbaseOmidClientConf)
-<a class="jxr_linenumber" name="203" href="#203">203</a>                 .postCommitter(syncPostCommitter)
-<a class="jxr_linenumber" name="204" href="#204">204</a>                 .commitTableClient(commitTableClient)
-<a class="jxr_linenumber" name="205" href="#205">205</a>                 .build();
-<a class="jxr_linenumber" name="206" href="#206">206</a>     }
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testStandardTXsWithShadowCellsAndWithSTBelowAndAboveLWMArePresevedAfterCompaction() <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="210" href="#210">210</a>         String TEST_TABLE = <span class="jxr_string">"testStandardTXsWithShadowCellsAndWithSTBelowAndAboveLWMArePresevedAfterCompaction"</span>;
-<a class="jxr_linenumber" name="211" href="#211">211</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
-<a class="jxr_linenumber" name="212" href="#212">212</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="213" href="#213">213</a> 
-<a class="jxr_linenumber" name="214" href="#214">214</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ROWS_TO_ADD = 5;
-<a class="jxr_linenumber" name="215" href="#215">215</a> 
-<a class="jxr_linenumber" name="216" href="#216">216</a>         <strong class="jxr_keyword">long</strong> fakeAssignedLowWatermark = 0L;
-<a class="jxr_linenumber" name="217" href="#217">217</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; ROWS_TO_ADD; ++i) {
-<a class="jxr_linenumber" name="218" href="#218">218</a>             <strong class="jxr_keyword">long</strong> rowId = randomGenerator.nextLong();
-<a class="jxr_linenumber" name="219" href="#219">219</a>             Transaction tx = tm.begin();
-<a class="jxr_linenumber" name="220" href="#220">220</a>             <strong class="jxr_keyword">if</strong> (i == (ROWS_TO_ADD / 2)) {
-<a class="jxr_linenumber" name="221" href="#221">221</a>                 fakeAssignedLowWatermark = tx.getTransactionId();
-<a class="jxr_linenumber" name="222" href="#222">222</a>                 LOG.info(<span class="jxr_string">"AssignedLowWatermark "</span> + fakeAssignedLowWatermark);
-<a class="jxr_linenumber" name="223" href="#223">223</a>             }
-<a class="jxr_linenumber" name="224" href="#224">224</a>             Put put = <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(rowId));
-<a class="jxr_linenumber" name="225" href="#225">225</a>             put.add(fam, qual, data);
-<a class="jxr_linenumber" name="226" href="#226">226</a>             txTable.put(tx, put);
-<a class="jxr_linenumber" name="227" href="#227">227</a>             tm.commit(tx);
-<a class="jxr_linenumber" name="228" href="#228">228</a>         }
-<a class="jxr_linenumber" name="229" href="#229">229</a> 
-<a class="jxr_linenumber" name="230" href="#230">230</a>         LOG.info(<span class="jxr_string">"Flushing table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="231" href="#231">231</a>         admin.flush(TEST_TABLE);
-<a class="jxr_linenumber" name="232" href="#232">232</a> 
-<a class="jxr_linenumber" name="233" href="#233">233</a>         <em class="jxr_comment">// Return a LWM that triggers compaction &amp; stays between 1 and the max start timestamp assigned to previous TXs</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>         LOG.info(<span class="jxr_string">"Regions in table {}: {}"</span>, TEST_TABLE, hbaseCluster.getRegions(Bytes.toBytes(TEST_TABLE)).size());
-<a class="jxr_linenumber" name="235" href="#235">235</a>         OmidCompactor omidCompactor = (OmidCompactor) hbaseCluster.getRegions(Bytes.toBytes(TEST_TABLE)).get(0)
-<a class="jxr_linenumber" name="236" href="#236">236</a>                 .getCoprocessorHost().findCoprocessor(OmidCompactor.<strong class="jxr_keyword">class</strong>.getName());
-<a class="jxr_linenumber" name="237" href="#237">237</a>         CommitTable commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="238" href="#238">238</a>         CommitTable.Client commitTableClient = spy(commitTable.getClient());
-<a class="jxr_linenumber" name="239" href="#239">239</a>         SettableFuture&lt;Long&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="240" href="#240">240</a>         f.set(fakeAssignedLowWatermark);
-<a class="jxr_linenumber" name="241" href="#241">241</a>         doReturn(f).when(commitTableClient).readLowWatermark();
-<a class="jxr_linenumber" name="242" href="#242">242</a>         omidCompactor.commitTableClientQueue.add(commitTableClient);
-<a class="jxr_linenumber" name="243" href="#243">243</a>         LOG.info(<span class="jxr_string">"Compacting table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="244" href="#244">244</a>         admin.majorCompact(TEST_TABLE);
-<a class="jxr_linenumber" name="245" href="#245">245</a> 
-<a class="jxr_linenumber" name="246" href="#246">246</a>         LOG.info(<span class="jxr_string">"Sleeping for 3 secs"</span>);
-<a class="jxr_linenumber" name="247" href="#247">247</a>         Thread.sleep(3000);
-<a class="jxr_linenumber" name="248" href="#248">248</a>         LOG.info(<span class="jxr_string">"Waking up after 3 secs"</span>);
-<a class="jxr_linenumber" name="249" href="#249">249</a> 
-<a class="jxr_linenumber" name="250" href="#250">250</a>         <em class="jxr_comment">// No rows should have been discarded after compacting</em>
-<a class="jxr_linenumber" name="251" href="#251">251</a>         assertEquals(rowCount(TEST_TABLE, fam), ROWS_TO_ADD, <span class="jxr_string">"Rows in table after compacting should be "</span> + ROWS_TO_ADD);
-<a class="jxr_linenumber" name="252" href="#252">252</a>     }
-<a class="jxr_linenumber" name="253" href="#253">253</a> 
-<a class="jxr_linenumber" name="254" href="#254">254</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="255" href="#255">255</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTXWithoutShadowCellsAndWithSTBelowLWMGetsShadowCellHealedAfterCompaction() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="256" href="#256">256</a>         String TEST_TABLE = <span class="jxr_string">"testTXWithoutShadowCellsAndWithSTBelowLWMGetsShadowCellHealedAfterCompaction"</span>;
-<a class="jxr_linenumber" name="257" href="#257">257</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
-<a class="jxr_linenumber" name="258" href="#258">258</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="259" href="#259">259</a> 
-<a class="jxr_linenumber" name="260" href="#260">260</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
-<a class="jxr_linenumber" name="261" href="#261">261</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="262" href="#262">262</a> 
-<a class="jxr_linenumber" name="263" href="#263">263</a>         HBaseTransaction problematicTx = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="264" href="#264">264</a> 
-<a class="jxr_linenumber" name="265" href="#265">265</a>         <strong class="jxr_keyword">long</strong> row = randomGenerator.nextLong();
-<a class="jxr_linenumber" name="266" href="#266">266</a> 
-<a class="jxr_linenumber" name="267" href="#267">267</a>         <em class="jxr_comment">// Test shadow cell are created properly</em>
-<a class="jxr_linenumber" name="268" href="#268">268</a>         Put put = <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(row));
-<a class="jxr_linenumber" name="269" href="#269">269</a>         put.add(fam, qual, data);
-<a class="jxr_linenumber" name="270" href="#270">270</a>         txTable.put(problematicTx, put);
-<a class="jxr_linenumber" name="271" href="#271">271</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="272" href="#272">272</a>             tm.commit(problematicTx);
-<a class="jxr_linenumber" name="273" href="#273">273</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) Crash</em>
-<a class="jxr_linenumber" name="274" href="#274">274</a>             <em class="jxr_comment">// Do nothing</em>
-<a class="jxr_linenumber" name="275" href="#275">275</a>         }
-<a class="jxr_linenumber" name="276" href="#276">276</a> 
-<a class="jxr_linenumber" name="277" href="#277">277</a>         assertTrue(CellUtils.hasCell(Bytes.toBytes(row), fam, qual, problematicTx.getStartTimestamp(),
-<a class="jxr_linenumber" name="278" href="#278">278</a>                                      <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="279" href="#279">279</a>                    <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="280" href="#280">280</a>         assertFalse(CellUtils.hasShadowCell(Bytes.toBytes(row), fam, qual, problematicTx.getStartTimestamp(),
-<a class="jxr_linenumber" name="281" href="#281">281</a>                                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="282" href="#282">282</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="283" href="#283">283</a> 
-<a class="jxr_linenumber" name="284" href="#284">284</a>         <em class="jxr_comment">// Return a LWM that triggers compaction and has all the possible start timestamps below it</em>
-<a class="jxr_linenumber" name="285" href="#285">285</a>         LOG.info(<span class="jxr_string">"Regions in table {}: {}"</span>, TEST_TABLE, hbaseCluster.getRegions(Bytes.toBytes(TEST_TABLE)).size());
-<a class="jxr_linenumber" name="286" href="#286">286</a>         OmidCompactor omidCompactor = (OmidCompactor) hbaseCluster.getRegions(Bytes.toBytes(TEST_TABLE)).get(0)
-<a class="jxr_linenumber" name="287" href="#287">287</a>                 .getCoprocessorHost().findCoprocessor(OmidCompactor.<strong class="jxr_keyword">class</strong>.getName());
-<a class="jxr_linenumber" name="288" href="#288">288</a>         CommitTable commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="289" href="#289">289</a>         CommitTable.Client commitTableClient = spy(commitTable.getClient());
-<a class="jxr_linenumber" name="290" href="#290">290</a>         SettableFuture&lt;Long&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="291" href="#291">291</a>         f.set(Long.MAX_VALUE);
-<a class="jxr_linenumber" name="292" href="#292">292</a>         doReturn(f).when(commitTableClient).readLowWatermark();
-<a class="jxr_linenumber" name="293" href="#293">293</a>         omidCompactor.commitTableClientQueue.add(commitTableClient);
-<a class="jxr_linenumber" name="294" href="#294">294</a> 
-<a class="jxr_linenumber" name="295" href="#295">295</a>         LOG.info(<span class="jxr_string">"Flushing table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="296" href="#296">296</a>         admin.flush(TEST_TABLE);
-<a class="jxr_linenumber" name="297" href="#297">297</a> 
-<a class="jxr_linenumber" name="298" href="#298">298</a>         LOG.info(<span class="jxr_string">"Compacting table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="299" href="#299">299</a>         admin.majorCompact(TEST_TABLE);
-<a class="jxr_linenumber" name="300" href="#300">300</a> 
-<a class="jxr_linenumber" name="301" href="#301">301</a>         LOG.info(<span class="jxr_string">"Sleeping for 3 secs"</span>);
-<a class="jxr_linenumber" name="302" href="#302">302</a>         Thread.sleep(3000);
-<a class="jxr_linenumber" name="303" href="#303">303</a>         LOG.info(<span class="jxr_string">"Waking up after 3 secs"</span>);
-<a class="jxr_linenumber" name="304" href="#304">304</a> 
-<a class="jxr_linenumber" name="305" href="#305">305</a>         assertTrue(CellUtils.hasCell(Bytes.toBytes(row), fam, qual, problematicTx.getStartTimestamp(),
-<a class="jxr_linenumber" name="306" href="#306">306</a>                                      <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="307" href="#307">307</a>                    <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="308" href="#308">308</a>         assertTrue(CellUtils.hasShadowCell(Bytes.toBytes(row), fam, qual, problematicTx.getStartTimestamp(),
-<a class="jxr_linenumber" name="309" href="#309">309</a>                                            <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="310" href="#310">310</a>                    <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="311" href="#311">311</a>     }
-<a class="jxr_linenumber" name="312" href="#312">312</a> 
-<a class="jxr_linenumber" name="313" href="#313">313</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="314" href="#314">314</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testNeverendingTXsWithSTBelowAndAboveLWMAreDiscardedAndPreservedRespectivelyAfterCompaction()
-<a class="jxr_linenumber" name="315" href="#315">315</a>             <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="316" href="#316">316</a>         String
-<a class="jxr_linenumber" name="317" href="#317">317</a>                 TEST_TABLE =
-<a class="jxr_linenumber" name="318" href="#318">318</a>                 <span class="jxr_string">"testNeverendingTXsWithSTBelowAndAboveLWMAreDiscardedAndPreservedRespectivelyAfterCompaction"</span>;
-<a class="jxr_linenumber" name="319" href="#319">319</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
-<a class="jxr_linenumber" name="320" href="#320">320</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="321" href="#321">321</a> 
-<a class="jxr_linenumber" name="322" href="#322">322</a>         <em class="jxr_comment">// The KV in this transaction should be discarded</em>
-<a class="jxr_linenumber" name="323" href="#323">323</a>         HBaseTransaction neverendingTxBelowLowWatermark = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="324" href="#324">324</a>         <strong class="jxr_keyword">long</strong> rowId = randomGenerator.nextLong();
-<a class="jxr_linenumber" name="325" href="#325">325</a>         Put put = <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(rowId));
-<a class="jxr_linenumber" name="326" href="#326">326</a>         put.add(fam, qual, data);
-<a class="jxr_linenumber" name="327" href="#327">327</a>         txTable.put(neverendingTxBelowLowWatermark, put);
-<a class="jxr_linenumber" name="328" href="#328">328</a>         assertTrue(CellUtils.hasCell(Bytes.toBytes(rowId), fam, qual, neverendingTxBelowLowWatermark.getStartTimestamp(),
-<a class="jxr_linenumber" name="329" href="#329">329</a>                                      <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="330" href="#330">330</a>                    <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="331" href="#331">331</a>         assertFalse(CellUtils.hasShadowCell(Bytes.toBytes(rowId), fam, qual, neverendingTxBelowLowWatermark.getStartTimestamp(),
-<a class="jxr_linenumber" name="332" href="#332">332</a>                                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="333" href="#333">333</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="334" href="#334">334</a> 
-<a class="jxr_linenumber" name="335" href="#335">335</a>         <em class="jxr_comment">// The KV in this transaction should be added without the shadow cells</em>
-<a class="jxr_linenumber" name="336" href="#336">336</a>         HBaseTransaction neverendingTxAboveLowWatermark = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="337" href="#337">337</a>         <strong class="jxr_keyword">long</strong> anotherRowId = randomGenerator.nextLong();
-<a class="jxr_linenumber" name="338" href="#338">338</a>         put = <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(anotherRowId));
-<a class="jxr_linenumber" name="339" href="#339">339</a>         put.add(fam, qual, data);
-<a class="jxr_linenumber" name="340" href="#340">340</a>         txTable.put(neverendingTxAboveLowWatermark, put);
-<a class="jxr_linenumber" name="341" href="#341">341</a>         assertTrue(CellUtils.hasCell(Bytes.toBytes(anotherRowId), fam, qual, neverendingTxAboveLowWatermark.getStartTimestamp(),
-<a class="jxr_linenumber" name="342" href="#342">342</a>                                      <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="343" href="#343">343</a>                    <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="344" href="#344">344</a>         assertFalse(CellUtils.hasShadowCell(Bytes.toBytes(anotherRowId), fam, qual, neverendingTxAboveLowWatermark.getStartTimestamp(),
-<a class="jxr_linenumber" name="345" href="#345">345</a>                                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="346" href="#346">346</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="347" href="#347">347</a> 
-<a class="jxr_linenumber" name="348" href="#348">348</a>         assertEquals(rowCount(TEST_TABLE, fam), 2, <span class="jxr_string">"Rows in table before flushing should be 2"</span>);
-<a class="jxr_linenumber" name="349" href="#349">349</a>         LOG.info(<span class="jxr_string">"Flushing table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="350" href="#350">350</a>         admin.flush(TEST_TABLE);
-<a class="jxr_linenumber" name="351" href="#351">351</a>         assertEquals(rowCount(TEST_TABLE, fam), 2, <span class="jxr_string">"Rows in table after flushing should be 2"</span>);
-<a class="jxr_linenumber" name="352" href="#352">352</a> 
-<a class="jxr_linenumber" name="353" href="#353">353</a>         <em class="jxr_comment">// Return a LWM that triggers compaction and stays between both ST of TXs, so assign 1st TX's start timestamp</em>
-<a class="jxr_linenumber" name="354" href="#354">354</a>         LOG.info(<span class="jxr_string">"Regions in table {}: {}"</span>, TEST_TABLE, hbaseCluster.getRegions(Bytes.toBytes(TEST_TABLE)).size());
-<a class="jxr_linenumber" name="355" href="#355">355</a>         OmidCompactor omidCompactor = (OmidCompactor) hbaseCluster.getRegions(Bytes.toBytes(TEST_TABLE)).get(0)
-<a class="jxr_linenumber" name="356" href="#356">356</a>                 .getCoprocessorHost().findCoprocessor(OmidCompactor.<strong class="jxr_keyword">class</strong>.getName());
-<a class="jxr_linenumber" name="357" href="#357">357</a>         CommitTable commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="358" href="#358">358</a>         CommitTable.Client commitTableClient = spy(commitTable.getClient());
-<a class="jxr_linenumber" name="359" href="#359">359</a>         SettableFuture&lt;Long&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="360" href="#360">360</a>         f.set(neverendingTxBelowLowWatermark.getStartTimestamp());
-<a class="jxr_linenumber" name="361" href="#361">361</a>         doReturn(f).when(commitTableClient).readLowWatermark();
-<a class="jxr_linenumber" name="362" href="#362">362</a>         omidCompactor.commitTableClientQueue.add(commitTableClient);
-<a class="jxr_linenumber" name="363" href="#363">363</a>         LOG.info(<span class="jxr_string">"Compacting table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="364" href="#364">364</a>         admin.majorCompact(TEST_TABLE);
-<a class="jxr_linenumber" name="365" href="#365">365</a> 
-<a class="jxr_linenumber" name="366" href="#366">366</a>         LOG.info(<span class="jxr_string">"Sleeping for 3 secs"</span>);
-<a class="jxr_linenumber" name="367" href="#367">367</a>         Thread.sleep(3000);
-<a class="jxr_linenumber" name="368" href="#368">368</a>         LOG.info(<span class="jxr_string">"Waking up after 3 secs"</span>);
-<a class="jxr_linenumber" name="369" href="#369">369</a> 
-<a class="jxr_linenumber" name="370" href="#370">370</a>         <em class="jxr_comment">// One row should have been discarded after compacting</em>
-<a class="jxr_linenumber" name="371" href="#371">371</a>         assertEquals(rowCount(TEST_TABLE, fam), 1, <span class="jxr_string">"There should be only one row in table after compacting"</span>);
-<a class="jxr_linenumber" name="372" href="#372">372</a>         <em class="jxr_comment">// The row from the TX below the LWM should not be there (nor its Shadow Cell)</em>
-<a class="jxr_linenumber" name="373" href="#373">373</a>         assertFalse(CellUtils.hasCell(Bytes.toBytes(rowId), fam, qual, neverendingTxBelowLowWatermark.getStartTimestamp(),
-<a class="jxr_linenumber" name="374" href="#374">374</a>                                       <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="375" href="#375">375</a>                     <span class="jxr_string">"Cell should not be there"</span>);
-<a class="jxr_linenumber" name="376" href="#376">376</a>         assertFalse(CellUtils.hasShadowCell(Bytes.toBytes(rowId), fam, qual, neverendingTxBelowLowWatermark.getStartTimestamp(),
-<a class="jxr_linenumber" name="377" href="#377">377</a>                                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="378" href="#378">378</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="379" href="#379">379</a>         <em class="jxr_comment">// The row from the TX above the LWM should be there without the Shadow Cell</em>
-<a class="jxr_linenumber" name="380" href="#380">380</a>         assertTrue(CellUtils.hasCell(Bytes.toBytes(anotherRowId), fam, qual, neverendingTxAboveLowWatermark.getStartTimestamp(),
-<a class="jxr_linenumber" name="381" href="#381">381</a>                                      <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="382" href="#382">382</a>                    <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="383" href="#383">383</a>         assertFalse(CellUtils.hasShadowCell(Bytes.toBytes(anotherRowId), fam, qual, neverendingTxAboveLowWatermark.getStartTimestamp(),
-<a class="jxr_linenumber" name="384" href="#384">384</a>                                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="385" href="#385">385</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="386" href="#386">386</a> 
-<a class="jxr_linenumber" name="387" href="#387">387</a>     }
-<a class="jxr_linenumber" name="388" href="#388">388</a> 
-<a class="jxr_linenumber" name="389" href="#389">389</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="390" href="#390">390</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRowsUnalteredWhenCommitTableCannotBeReached() <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="391" href="#391">391</a>         String TEST_TABLE = <span class="jxr_string">"testRowsUnalteredWhenCommitTableCannotBeReached"</span>;
-<a class="jxr_linenumber" name="392" href="#392">392</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
-<a class="jxr_linenumber" name="393" href="#393">393</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="394" href="#394">394</a> 
-<a class="jxr_linenumber" name="395" href="#395">395</a>         <em class="jxr_comment">// The KV in this transaction should be discarded but in the end should remain there because</em>
-<a class="jxr_linenumber" name="396" href="#396">396</a>         <em class="jxr_comment">// the commit table won't be accessed (simulating an error on access)</em>
-<a class="jxr_linenumber" name="397" href="#397">397</a>         HBaseTransaction neverendingTx = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="398" href="#398">398</a>         <strong class="jxr_keyword">long</strong> rowId = randomGenerator.nextLong();
-<a class="jxr_linenumber" name="399" href="#399">399</a>         Put put = <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(rowId));
-<a class="jxr_linenumber" name="400" href="#400">400</a>         put.add(fam, qual, data);
-<a class="jxr_linenumber" name="401" href="#401">401</a>         txTable.put(neverendingTx, put);
-<a class="jxr_linenumber" name="402" href="#402">402</a>         assertTrue(CellUtils.hasCell(Bytes.toBytes(rowId), fam, qual, neverendingTx.getStartTimestamp(),
-<a class="jxr_linenumber" name="403" href="#403">403</a>                                      <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="404" href="#404">404</a>                    <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="405" href="#405">405</a>         assertFalse(CellUtils.hasShadowCell(Bytes.toBytes(rowId), fam, qual, neverendingTx.getStartTimestamp(),
-<a class="jxr_linenumber" name="406" href="#406">406</a>                                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="407" href="#407">407</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="408" href="#408">408</a> 
-<a class="jxr_linenumber" name="409" href="#409">409</a>         assertEquals(rowCount(TEST_TABLE, fam), 1, <span class="jxr_string">"There should be only one rows in table before flushing"</span>);
-<a class="jxr_linenumber" name="410" href="#410">410</a>         LOG.info(<span class="jxr_string">"Flushing table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="411" href="#411">411</a>         admin.flush(TEST_TABLE);
-<a class="jxr_linenumber" name="412" href="#412">412</a>         assertEquals(rowCount(TEST_TABLE, fam), 1, <span class="jxr_string">"There should be only one rows in table after flushing"</span>);
-<a class="jxr_linenumber" name="413" href="#413">413</a> 
-<a class="jxr_linenumber" name="414" href="#414">414</a>         <em class="jxr_comment">// Break access to CommitTable functionality in Compactor</em>
-<a class="jxr_linenumber" name="415" href="#415">415</a>         LOG.info(<span class="jxr_string">"Regions in table {}: {}"</span>, TEST_TABLE, hbaseCluster.getRegions(Bytes.toBytes(TEST_TABLE)).size());
-<a class="jxr_linenumber" name="416" href="#416">416</a>         OmidCompactor omidCompactor = (OmidCompactor) hbaseCluster.getRegions(Bytes.toBytes(TEST_TABLE)).get(0)
-<a class="jxr_linenumber" name="417" href="#417">417</a>                 .getCoprocessorHost().findCoprocessor(OmidCompactor.<strong class="jxr_keyword">class</strong>.getName());
-<a class="jxr_linenumber" name="418" href="#418">418</a>         CommitTable commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="419" href="#419">419</a>         CommitTable.Client commitTableClient = spy(commitTable.getClient());
-<a class="jxr_linenumber" name="420" href="#420">420</a>         SettableFuture&lt;Long&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="421" href="#421">421</a>         f.setException(<strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Unable to read"</span>));
-<a class="jxr_linenumber" name="422" href="#422">422</a>         doReturn(f).when(commitTableClient).readLowWatermark();
-<a class="jxr_linenumber" name="423" href="#423">423</a>         omidCompactor.commitTableClientQueue.add(commitTableClient);
-<a class="jxr_linenumber" name="424" href="#424">424</a> 
-<a class="jxr_linenumber" name="425" href="#425">425</a>         LOG.info(<span class="jxr_string">"Compacting table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="426" href="#426">426</a>         admin.majorCompact(TEST_TABLE); <em class="jxr_comment">// Should trigger the error when accessing CommitTable funct.</em>
-<a class="jxr_linenumber" name="427" href="#427">427</a> 
-<a class="jxr_linenumber" name="428" href="#428">428</a>         LOG.info(<span class="jxr_string">"Sleeping for 3 secs"</span>);
-<a class="jxr_linenumber" name="429" href="#429">429</a>         Thread.sleep(3000);
-<a class="jxr_linenumber" name="430" href="#430">430</a>         LOG.info(<span class="jxr_string">"Waking up after 3 secs"</span>);
-<a class="jxr_linenumber" name="431" href="#431">431</a> 
-<a class="jxr_linenumber" name="432" href="#432">432</a>         <em class="jxr_comment">// All rows should be there after the failed compaction</em>
-<a class="jxr_linenumber" name="433" href="#433">433</a>         assertEquals(rowCount(TEST_TABLE, fam), 1, <span class="jxr_string">"There should be only one row in table after compacting"</span>);
-<a class="jxr_linenumber" name="434" href="#434">434</a>         assertTrue(CellUtils.hasCell(Bytes.toBytes(rowId), fam, qual, neverendingTx.getStartTimestamp(),
-<a class="jxr_linenumber" name="435" href="#435">435</a>                                      <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="436" href="#436">436</a>                    <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="437" href="#437">437</a>         assertFalse(CellUtils.hasShadowCell(Bytes.toBytes(rowId), fam, qual, neverendingTx.getStartTimestamp(),
-<a class="jxr_linenumber" name="438" href="#438">438</a>                                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable)),
-<a class="jxr_linenumber" name="439" href="#439">439</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="440" href="#440">440</a>     }
-<a class="jxr_linenumber" name="441" href="#441">441</a> 
-<a class="jxr_linenumber" name="442" href="#442">442</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="443" href="#443">443</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOriginalTableParametersAreAvoidedAlsoWhenCompacting() <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="444" href="#444">444</a>         String TEST_TABLE = <span class="jxr_string">"testOriginalTableParametersAreAvoidedAlsoWhenCompacting"</span>;
-<a class="jxr_linenumber" name="445" href="#445">445</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
-<a class="jxr_linenumber" name="446" href="#446">446</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="447" href="#447">447</a> 
-<a class="jxr_linenumber" name="448" href="#448">448</a>         <strong class="jxr_keyword">long</strong> rowId = randomGenerator.nextLong();
-<a class="jxr_linenumber" name="449" href="#449">449</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> versionCount = 0; versionCount &lt;= (2 * MAX_VERSIONS); versionCount++) {
-<a class="jxr_linenumber" name="450" href="#450">450</a>             Transaction tx = tm.begin();
-<a class="jxr_linenumber" name="451" href="#451">451</a>             Put put = <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(rowId));
-<a class="jxr_linenumber" name="452" href="#452">452</a>             put.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testWrite-"</span> + versionCount));
-<a class="jxr_linenumber" name="453" href="#453">453</a>             txTable.put(tx, put);
-<a class="jxr_linenumber" name="454" href="#454">454</a>             tm.commit(tx);
-<a class="jxr_linenumber" name="455" href="#455">455</a>         }
-<a class="jxr_linenumber" name="456" href="#456">456</a> 
-<a class="jxr_linenumber" name="457" href="#457">457</a>         Transaction tx = tm.begin();
-<a class="jxr_linenumber" name="458" href="#458">458</a>         Get get = <strong class="jxr_keyword">new</strong> Get(Bytes.toBytes(rowId));
-<a class="jxr_linenumber" name="459" href="#459">459</a>         get.setMaxVersions(2 * MAX_VERSIONS);
-<a class="jxr_linenumber" name="460" href="#460">460</a>         assertEquals(get.getMaxVersions(), (2 * MAX_VERSIONS), <span class="jxr_string">"Max versions should be set to "</span> + (2 * MAX_VERSIONS));
-<a class="jxr_linenumber" name="461" href="#461">461</a>         get.addColumn(fam, qual);
-<a class="jxr_linenumber" name="462" href="#462">462</a>         Result result = txTable.get(tx, get);
-<a class="jxr_linenumber" name="463" href="#463">463</a>         tm.commit(tx);
-<a class="jxr_linenumber" name="464" href="#464">464</a>         List&lt;Cell&gt; column = result.getColumnCells(fam, qual);
-<a class="jxr_linenumber" name="465" href="#465">465</a>         assertEquals(column.size(), 1, <span class="jxr_string">"There should be only one version in the result"</span>);
-<a class="jxr_linenumber" name="466" href="#466">466</a> 
-<a class="jxr_linenumber" name="467" href="#467">467</a>         assertEquals(rowCount(TEST_TABLE, fam), 1, <span class="jxr_string">"There should be only one row in table before flushing"</span>);
-<a class="jxr_linenumber" name="468" href="#468">468</a>         LOG.info(<span class="jxr_string">"Flushing table {}"</span>, TEST_TABLE);
-<a class="jxr_linenumber" name="469" href="#469">469</a>         admin.flush(TEST_TABLE);
-<a class="jxr_linenumber" name="470" href="#470">470</a>         assertEquals(rowCount(TEST_TABLE, fam), 1, <span class="jxr_string">"There should be only one row in table after flushing"</span>);
-<a class="jxr_linenumber" name="471" href="#471">471</a> 
-<a class="jxr_linenumber" name="472" href="#472">472</a>         <em class="jxr_comment">// Return a LWM that triggers compaction</em>
-<a class="jxr_linenumber" name="473" href="#473">473</a>         compactEverything(TEST_TABLE);
-<a class="jxr_linenumber" name="474" href="#474">474</a> 
-<a class="jxr_linenumber" name="475" href="#475">475</a>         <em class="jxr_comment">// One row should have been discarded after compacting</em>
-<a class="jxr_linenumber" name="476" href="#476">476</a>         assertEquals(rowCount(TEST_TABLE, fam), 1, <span class="jxr_string">"There should be only one row in table after compacting"</span>);
-<a class="jxr_linenumber" name="477" href="#477">477</a> 
-<a class="jxr_linenumber" name="478" href="#478">478</a>         tx = tm.begin();
-<a class="jxr_linenumber" name="479" href="#479">479</a>         get = <strong class="jxr_keyword">new</strong> Get(Bytes.toBytes(rowId));
-<a class="jxr_linenumber" name="480" href="#480">480</a>         get.setMaxVersions(2 * MAX_VERSIONS);
-<a class="jxr_linenumber" name="481" href="#481">481</a>         assertEquals(get.getMaxVersions(), (2 * MAX_VERSIONS), <span class="jxr_string">"Max versions should be set to "</span> + (2 * MAX_VERSIONS));
-<a class="jxr_linenumber" name="482" href="#482">482</a>         get.addColumn(fam, qual);
-<a class="jxr_linenumber" name="483" href="#483">483</a>         result = txTable.get(tx, get);
-<a class="jxr_linenumber" name="484" href="#484">484</a>         tm.commit(tx);
-<a class="jxr_linenumber" name="485" href="#485">485</a>         column = result.getColumnCells(fam, qual);
-<a class="jxr_linenumber" name="486" href="#486">486</a>         assertEquals(column.size(), 1, <span class="jxr_string">"There should be only one version in the result"</span>);
-<a class="jxr_linenumber" name="487" href="#487">487</a>         assertEquals(Bytes.toString(CellUtil.cloneValue(column.get(0))), <span class="jxr_string">"testWrite-"</span> + (2 * MAX_VERSIONS),
-<a class="jxr_linenumber" name="488" href="#488">488</a>                      <span class="jxr_string">"Values don't match"</span>);
-<a class="jxr_linenumber" name="489" href="#489">489</a>     }
-<a class="jxr_linenumber" name="490" href="#490">490</a> 
-<a class="jxr_linenumber" name="491" href="#491">491</a>     <em class="jxr_comment">// manually flush the regions on the region server.</em>
-<a class="jxr_linenumber" name="492" href="#492">492</a>     <em class="jxr_comment">// flushing like this prevents compaction running</em>
-<a class="jxr_linenumber" name="493" href="#493">493</a>     <em class="jxr_comment">// directly after the flush, which we want to avoid.</em>
-<a class="jxr_linenumber" name="494" href="#494">494</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> manualFlush(String tableName) <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="495" href="#495">495</a>         LOG.info(<span class="jxr_string">"Manually flushing all regions and waiting 2 secs"</span>);
-<a class="jxr_linenumber" name="496" href="#496">496</a>         HBaseShims.flushAllOnlineRegions(hbaseTestUtil.getHBaseCluster().getRegionServer(0),
-<a class="jxr_linenumber" name="497" href="#497">497</a>                                          TableName.valueOf(tableName));
-<a class="jxr_linenumber" name="498" href="#498">498</a>         TimeUnit.SECONDS.sleep(2);
-<a class="jxr_linenumber" name="499" href="#499">499</a>     }
-<a class="jxr_linenumber" name="500" href="#500">500</a> 
-<a class="jxr_linenumber" name="501" href="#501">501</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="502" href="#502">502</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOldCellsAreDiscardedAfterCompaction() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="503" href="#503">503</a>         String TEST_TABLE = <span class="jxr_string">"testOldCellsAreDiscardedAfterCompaction"</span>;
-<a class="jxr_linenumber" name="504" href="#504">504</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
-<a class="jxr_linenumber" name="505" href="#505">505</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="506" href="#506">506</a> 
-<a class="jxr_linenumber" name="507" href="#507">507</a>         byte[] rowId = Bytes.toBytes(<span class="jxr_string">"row"</span>);
-<a class="jxr_linenumber" name="508" href="#508">508</a> 
-<a class="jxr_linenumber" name="509" href="#509">509</a>         <em class="jxr_comment">// Create 3 transactions modifying the same cell in a particular row</em>
-<a class="jxr_linenumber" name="510" href="#510">510</a>         HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="511" href="#511">511</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowId);
-<a class="jxr_linenumber" name="512" href="#512">512</a>         put1.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testValue 1"</span>));
-<a class="jxr_linenumber" name="513" href="#513">513</a>         txTable.put(tx1, put1);
-<a class="jxr_linenumber" name="514" href="#514">514</a>         tm.commit(tx1);
-<a class="jxr_linenumber" name="515" href="#515">515</a> 
-<a class="jxr_linenumber" name="516" href="#516">516</a>         HBaseTransaction tx2 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="517" href="#517">517</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(rowId);
-<a class="jxr_linenumber" name="518" href="#518">518</a>         put2.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testValue 2"</span>));
-<a class="jxr_linenumber" name="519" href="#519">519</a>         txTable.put(tx2, put2);
-<a class="jxr_linenumber" name="520" href="#520">520</a>         tm.commit(tx2);
-<a class="jxr_linenumber" name="521" href="#521">521</a> 
-<a class="jxr_linenumber" name="522" href="#522">522</a>         HBaseTransaction tx3 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="523" href="#523">523</a>         Put put3 = <strong class="jxr_keyword">new</strong> Put(rowId);
-<a class="jxr_linenumber" name="524" href="#524">524</a>         put3.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testValue 3"</span>));
-<a class="jxr_linenumber" name="525" href="#525">525</a>         txTable.put(tx3, put3);
-<a class="jxr_linenumber" name="526" href="#526">526</a>         tm.commit(tx3);
-<a class="jxr_linenumber" name="527" href="#527">527</a> 
-<a class="jxr_linenumber" name="528" href="#528">528</a>         <em class="jxr_comment">// Before compaction, the three timestamped values for the cell should be there</em>
-<a class="jxr_linenumber" name="529" href="#529">529</a>         TTableCellGetterAdapter getter = <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(txTable);
-<a class="jxr_linenumber" name="530" href="#530">530</a>         assertTrue(CellUtils.hasCell(rowId, fam, qual, tx1.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="531" href="#531">531</a>                    <span class="jxr_string">"Put cell of Tx1 should be there"</span>);
-<a class="jxr_linenumber" name="532" href="#532">532</a>         assertTrue(CellUtils.hasShadowCell(rowId, fam, qual, tx1.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="533" href="#533">533</a>                    <span class="jxr_string">"Put shadow cell of Tx1 should be there"</span>);
-<a class="jxr_linenumber" name="534" href="#534">534</a>         assertTrue(CellUtils.hasCell(rowId, fam, qual, tx2.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="535" href="#535">535</a>                    <span class="jxr_string">"Put cell of Tx2 cell should be there"</span>);
-<a class="jxr_linenumber" name="536" href="#536">536</a>         assertTrue(CellUtils.hasShadowCell(rowId, fam, qual, tx2.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="537" href="#537">537</a>                    <span class="jxr_string">"Put shadow cell of Tx2 should be there"</span>);
-<a class="jxr_linenumber" name="538" href="#538">538</a>         assertTrue(CellUtils.hasCell(rowId, fam, qual, tx3.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="539" href="#539">539</a>                    <span class="jxr_string">"Put cell of Tx3 cell should be there"</span>);
-<a class="jxr_linenumber" name="540" href="#540">540</a>         assertTrue(CellUtils.hasShadowCell(rowId, fam, qual, tx3.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="541" href="#541">541</a>                    <span class="jxr_string">"Put shadow cell of Tx3 should be there"</span>);
-<a class="jxr_linenumber" name="542" href="#542">542</a> 
-<a class="jxr_linenumber" name="543" href="#543">543</a>         <em class="jxr_comment">// Compact</em>
-<a class="jxr_linenumber" name="544" href="#544">544</a>         HBaseTransaction lwmTx = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="545" href="#545">545</a>         compactWithLWM(lwmTx.getStartTimestamp(), TEST_TABLE);
-<a class="jxr_linenumber" name="546" href="#546">546</a> 
-<a class="jxr_linenumber" name="547" href="#547">547</a>         <em class="jxr_comment">// After compaction, only the last value for the cell should have survived</em>
-<a class="jxr_linenumber" name="548" href="#548">548</a>         assertFalse(CellUtils.hasCell(rowId, fam, qual, tx1.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="549" href="#549">549</a>                     <span class="jxr_string">"Put cell of Tx1 should not be there"</span>);
-<a class="jxr_linenumber" name="550" href="#550">550</a>         assertFalse(CellUtils.hasShadowCell(rowId, fam, qual, tx1.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="551" href="#551">551</a>                     <span class="jxr_string">"Put shadow cell of Tx1 should not be there"</span>);
-<a class="jxr_linenumber" name="552" href="#552">552</a>         assertFalse(CellUtils.hasCell(rowId, fam, qual, tx2.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="553" href="#553">553</a>                     <span class="jxr_string">"Put cell of Tx2 should not be there"</span>);
-<a class="jxr_linenumber" name="554" href="#554">554</a>         assertFalse(CellUtils.hasShadowCell(rowId, fam, qual, tx2.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="555" href="#555">555</a>                     <span class="jxr_string">"Put shadow cell of Tx2 should not be there"</span>);
-<a class="jxr_linenumber" name="556" href="#556">556</a>         assertTrue(CellUtils.hasCell(rowId, fam, qual, tx3.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="557" href="#557">557</a>                    <span class="jxr_string">"Put cell of Tx3 cell should be there"</span>);
-<a class="jxr_linenumber" name="558" href="#558">558</a>         assertTrue(CellUtils.hasShadowCell(rowId, fam, qual, tx3.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="559" href="#559">559</a>                    <span class="jxr_string">"Put shadow cell of Tx3 should be there"</span>);
-<a class="jxr_linenumber" name="560" href="#560">560</a> 
-<a class="jxr_linenumber" name="561" href="#561">561</a>         <em class="jxr_comment">// A new transaction after compaction should read the last value written</em>
-<a class="jxr_linenumber" name="562" href="#562">562</a>         HBaseTransaction newTx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="563" href="#563">563</a>         Get newGet1 = <strong class="jxr_keyword">new</strong> Get(rowId);
-<a class="jxr_linenumber" name="564" href="#564">564</a>         newGet1.addColumn(fam, qual);
-<a class="jxr_linenumber" name="565" href="#565">565</a>         Result result = txTable.get(newTx1, newGet1);
-<a class="jxr_linenumber" name="566" href="#566">566</a>         assertEquals(Bytes.toBytes(<span class="jxr_string">"testValue 3"</span>), result.getValue(fam, qual));
-<a class="jxr_linenumber" name="567" href="#567">567</a>         <em class="jxr_comment">// Write a new value</em>
-<a class="jxr_linenumber" name="568" href="#568">568</a>         Put newPut1 = <strong class="jxr_keyword">new</strong> Put(rowId);
-<a class="jxr_linenumber" name="569" href="#569">569</a>         newPut1.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"new testValue 1"</span>));
-<a class="jxr_linenumber" name="570" href="#570">570</a>         txTable.put(newTx1, newPut1);
-<a class="jxr_linenumber" name="571" href="#571">571</a> 
-<a class="jxr_linenumber" name="572" href="#572">572</a>         <em class="jxr_comment">// Start a second new transaction</em>
-<a class="jxr_linenumber" name="573" href="#573">573</a>         HBaseTransaction newTx2 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="574" href="#574">574</a>         <em class="jxr_comment">// Commit first of the new tx</em>
-<a class="jxr_linenumber" name="575" href="#575">575</a>         tm.commit(newTx1);
-<a class="jxr_linenumber" name="576" href="#576">576</a> 
-<a class="jxr_linenumber" name="577" href="#577">577</a>         <em class="jxr_comment">// The second transaction should still read the previous value</em>
-<a class="jxr_linenumber" name="578" href="#578">578</a>         Get newGet2 = <strong class="jxr_keyword">new</strong> Get(rowId);
-<a class="jxr_linenumber" name="579" href="#579">579</a>         newGet2.addColumn(fam, qual);
-<a class="jxr_linenumber" name="580" href="#580">580</a>         result = txTable.get(newTx2, newGet2);
-<a class="jxr_linenumber" name="581" href="#581">581</a>         assertEquals(Bytes.toBytes(<span class="jxr_string">"testValue 3"</span>), result.getValue(fam, qual));
-<a class="jxr_linenumber" name="582" href="#582">582</a>         tm.commit(newTx2);
-<a class="jxr_linenumber" name="583" href="#583">583</a> 
-<a class="jxr_linenumber" name="584" href="#584">584</a>         <em class="jxr_comment">// Only two values -the new written by newTx1 and the last value</em>
-<a class="jxr_linenumber" name="585" href="#585">585</a>         <em class="jxr_comment">// for the cell after compaction- should have survived</em>
-<a class="jxr_linenumber" name="586" href="#586">586</a>         assertFalse(CellUtils.hasCell(rowId, fam, qual, tx1.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="587" href="#587">587</a>                     <span class="jxr_string">"Put cell of Tx1 should not be there"</span>);
-<a class="jxr_linenumber" name="588" href="#588">588</a>         assertFalse(CellUtils.hasShadowCell(rowId, fam, qual, tx1.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="589" href="#589">589</a>                     <span class="jxr_string">"Put shadow cell of Tx1 should not be there"</span>);
-<a class="jxr_linenumber" name="590" href="#590">590</a>         assertFalse(CellUtils.hasCell(rowId, fam, qual, tx2.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="591" href="#591">591</a>                     <span class="jxr_string">"Put cell of Tx2 should not be there"</span>);
-<a class="jxr_linenumber" name="592" href="#592">592</a>         assertFalse(CellUtils.hasShadowCell(rowId, fam, qual, tx2.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="593" href="#593">593</a>                     <span class="jxr_string">"Put shadow cell of Tx2 should not be there"</span>);
-<a class="jxr_linenumber" name="594" href="#594">594</a>         assertTrue(CellUtils.hasCell(rowId, fam, qual, tx3.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="595" href="#595">595</a>                    <span class="jxr_string">"Put cell of Tx3 cell should be there"</span>);
-<a class="jxr_linenumber" name="596" href="#596">596</a>         assertTrue(CellUtils.hasShadowCell(rowId, fam, qual, tx3.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="597" href="#597">597</a>                    <span class="jxr_string">"Put shadow cell of Tx3 should be there"</span>);
-<a class="jxr_linenumber" name="598" href="#598">598</a>         assertTrue(CellUtils.hasCell(rowId, fam, qual, newTx1.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="599" href="#599">599</a>                    <span class="jxr_string">"Put cell of NewTx1 cell should be there"</span>);
-<a class="jxr_linenumber" name="600" href="#600">600</a>         assertTrue(CellUtils.hasShadowCell(rowId, fam, qual, newTx1.getStartTimestamp(), getter),
-<a class="jxr_linenumber" name="601" href="#601">601</a>                    <span class="jxr_string">"Put shadow cell of NewTx1 should be there"</span>);
-<a class="jxr_linenumber" name="602" href="#602">602</a>     }
-<a class="jxr_linenumber" name="603" href="#603">603</a> 
-<a class="jxr_linenumber" name="604" href="#604">604</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="605" href="#605">605</a> <em class="jxr_javadoccomment">     * Tests a case where a temporary failure to flush causes the compactor to crash</em>
-<a class="jxr_linenumber" name="606" href="#606">606</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="607" href="#607">607</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="608" href="#608">608</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDuplicateDeletes() <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="609" href="#609">609</a>         String TEST_TABLE = <span class="jxr_string">"testDuplicateDeletes"</span>;
-<a class="jxr_linenumber" name="610" href="#610">610</a>         createTableIfNotExists(TEST_TABLE, Bytes.toBytes(TEST_FAMILY));
-<a class="jxr_linenumber" name="611" href="#611">611</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="612" href="#612">612</a> 
-<a class="jxr_linenumber" name="613" href="#613">613</a>         <em class="jxr_comment">// jump through hoops to trigger a minor compaction.</em>
-<a class="jxr_linenumber" name="614" href="#614">614</a>         <em class="jxr_comment">// a minor compaction will only run if there are enough</em>
-<a class="jxr_linenumber" name="615" href="#615">615</a>         <em class="jxr_comment">// files to be compacted, but that is less than the number</em>
-<a class="jxr_linenumber" name="616" href="#616">616</a>         <em class="jxr_comment">// of total files, in which case it will run a major</em>
-<a class="jxr_linenumber" name="617" href="#617">617</a>         <em class="jxr_comment">// compaction. The issue this is testing only shows up</em>
-<a class="jxr_linenumber" name="618" href="#618">618</a>         <em class="jxr_comment">// with minor compaction, as only Deletes can be duplicate</em>
-<a class="jxr_linenumber" name="619" href="#619">619</a>         <em class="jxr_comment">// and major compactions filter them out.</em>
-<a class="jxr_linenumber" name="620" href="#620">620</a>         byte[] firstRow = <span class="jxr_string">"FirstRow"</span>.getBytes();
-<a class="jxr_linenumber" name="621" href="#621">621</a>         HBaseTransaction tx0 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="622" href="#622">622</a>         Put put0 = <strong class="jxr_keyword">new</strong> Put(firstRow);
-<a class="jxr_linenumber" name="623" href="#623">623</a>         put0.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>));
-<a class="jxr_linenumber" name="624" href="#624">624</a>         txTable.put(tx0, put0);
-<a class="jxr_linenumber" name="625" href="#625">625</a>         tm.commit(tx0);
-<a class="jxr_linenumber" name="626" href="#626">626</a> 
-<a class="jxr_linenumber" name="627" href="#627">627</a>         <em class="jxr_comment">// create the first hfile</em>
-<a class="jxr_linenumber" name="628" href="#628">628</a>         manualFlush(TEST_TABLE);
-<a class="jxr_linenumber" name="629" href="#629">629</a> 
-<a class="jxr_linenumber" name="630" href="#630">630</a>         <em class="jxr_comment">// write a row, it won't be committed</em>
-<a class="jxr_linenumber" name="631" href="#631">631</a>         byte[] rowToBeCompactedAway = <span class="jxr_string">"compactMe"</span>.getBytes();
-<a class="jxr_linenumber" name="632" href="#632">632</a>         HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="633" href="#633">633</a>         Put put1 = <strong class="jxr_keyword">new</strong> Put(rowToBeCompactedAway);
-<a class="jxr_linenumber" name="634" href="#634">634</a>         put1.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>));
-<a class="jxr_linenumber" name="635" href="#635">635</a>         txTable.put(tx1, put1);
-<a class="jxr_linenumber" name="636" href="#636">636</a>         txTable.flushCommits();
-<a class="jxr_linenumber" name="637" href="#637">637</a> 
-<a class="jxr_linenumber" name="638" href="#638">638</a>         <em class="jxr_comment">// write a row to trigger the double delete problem</em>
-<a class="jxr_linenumber" name="639" href="#639">639</a>         byte[] row = <span class="jxr_string">"iCauseErrors"</span>.getBytes();
-<a class="jxr_linenumber" name="640" href="#640">640</a>         HBaseTransaction tx2 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="641" href="#641">641</a>         Put put2 = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="642" href="#642">642</a>         put2.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>));
-<a class="jxr_linenumber" name="643" href="#643">643</a>         txTable.put(tx2, put2);
-<a class="jxr_linenumber" name="644" href="#644">644</a>         tm.commit(tx2);
-<a class="jxr_linenumber" name="645" href="#645">645</a> 
-<a class="jxr_linenumber" name="646" href="#646">646</a>         HBaseTransaction tx3 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="647" href="#647">647</a>         Put put3 = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="648" href="#648">648</a>         put3.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>));
-<a class="jxr_linenumber" name="649" href="#649">649</a>         txTable.put(tx3, put3);
-<a class="jxr_linenumber" name="650" href="#650">650</a>         txTable.flushCommits();
-<a class="jxr_linenumber" name="651" href="#651">651</a> 
-<a class="jxr_linenumber" name="652" href="#652">652</a>         <em class="jxr_comment">// cause a failure on HBaseTM#preCommit();</em>
-<a class="jxr_linenumber" name="653" href="#653">653</a>         Set&lt;HBaseCellId&gt; writeSet = tx3.getWriteSet();
-<a class="jxr_linenumber" name="654" href="#654">654</a>         assertEquals(1, writeSet.size());
-<a class="jxr_linenumber" name="655" href="#655">655</a>         List&lt;HBaseCellId&gt; newWriteSet = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="656" href="#656">656</a>         <strong class="jxr_keyword">final</strong> AtomicBoolean flushFailing = <strong class="jxr_keyword">new</strong> AtomicBoolean(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="657" href="#657">657</a>         <strong class="jxr_keyword">for</strong> (HBaseCellId id : writeSet) {
-<a class="jxr_linenumber" name="658" href="#658">658</a>             HTableInterface failableHTable = spy(id.getTable());
-<a class="jxr_linenumber" name="659" href="#659">659</a>             doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;Void&gt;() {
-<a class="jxr_linenumber" name="660" href="#660">660</a>                 @Override
-<a class="jxr_linenumber" name="661" href="#661">661</a>                 <strong class="jxr_keyword">public</strong> Void answer(InvocationOnMock invocation)
-<a class="jxr_linenumber" name="662" href="#662">662</a>                         <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="663" href="#663">663</a>                     <strong class="jxr_keyword">if</strong> (flushFailing.get()) {
-<a class="jxr_linenumber" name="664" href="#664">664</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RetriesExhaustedWithDetailsException(<strong class="jxr_keyword">new</strong> ArrayList&lt;Throwable&gt;(),
-<a class="jxr_linenumber" name="665" href="#665">665</a>                                                                        <strong class="jxr_keyword">new</strong> ArrayList&lt;Row&gt;(), <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;());
-<a class="jxr_linenumber" name="666" href="#666">666</a>                     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="667" href="#667">667</a>                         invocation.callRealMethod();
-<a class="jxr_linenumber" name="668" href="#668">668</a>                     }
-<a class="jxr_linenumber" name="669" href="#669">669</a>                     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="670" href="#670">670</a>                 }
-<a class="jxr_linenumber" name="671" href="#671">671</a>             }).when(failableHTable).flushCommits();
-<a class="jxr_linenumber" name="672" href="#672">672</a> 
-<a class="jxr_linenumber" name="673" href="#673">673</a>             newWriteSet.add(<strong class="jxr_keyword">new</strong> HBaseCellId(failableHTable,
-<a class="jxr_linenumber" name="674" href="#674">674</a>                                             id.getRow(), id.getFamily(),
-<a class="jxr_linenumber" name="675" href="#675">675</a>                                             id.getQualifier(), id.getTimestamp()));
-<a class="jxr_linenumber" name="676" href="#676">676</a>         }
-<a class="jxr_linenumber" name="677" href="#677">677</a>         writeSet.clear();
-<a class="jxr_linenumber" name="678" href="#678">678</a>         writeSet.addAll(newWriteSet);
-<a class="jxr_linenumber" name="679" href="#679">679</a> 
-<a class="jxr_linenumber" name="680" href="#680">680</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="681" href="#681">681</a>             tm.commit(tx3);
-<a class="jxr_linenumber" name="682" href="#682">682</a>             fail(<span class="jxr_string">"Shouldn't succeed"</span>);
-<a class="jxr_linenumber" name="683" href="#683">683</a>         } <strong class="jxr_keyword">catch</strong> (TransactionException tme) {
-<a class="jxr_linenumber" name="684" href="#684">684</a>             flushFailing.set(false);
-<a class="jxr_linenumber" name="685" href="#685">685</a>             tm.rollback(tx3);
-<a class="jxr_linenumber" name="686" href="#686">686</a>         }
-<a class="jxr_linenumber" name="687" href="#687">687</a> 
-<a class="jxr_linenumber" name="688" href="#688">688</a>         <em class="jxr_comment">// create second hfile,</em>
-<a class="jxr_linenumber" name="689" href="#689">689</a>         <em class="jxr_comment">// it should contain multiple deletes</em>
-<a class="jxr_linenumber" name="690" href="#690">690</a>         manualFlush(TEST_TABLE);
-<a class="jxr_linenumber" name="691" href="#691">691</a> 
-<a class="jxr_linenumber" name="692" href="#692">692</a>         <em class="jxr_comment">// create loads of files</em>
-<a class="jxr_linenumber" name="693" href="#693">693</a>         byte[] anotherRow = <span class="jxr_string">"someotherrow"</span>.getBytes();
-<a class="jxr_linenumber" name="694" href="#694">694</a>         HBaseTransaction tx4 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="695" href="#695">695</a>         Put put4 = <strong class="jxr_keyword">new</strong> Put(anotherRow);
-<a class="jxr_linenumber" name="696" href="#696">696</a>         put4.add(fam, qual, Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>));
-<a class="jxr_linenumber" name="697" href="#697">697</a>         txTable.put(tx4, put4);
-<a class="jxr_linenumber" name="698" href="#698">698</a>         tm.commit(tx4);
-<a class="jxr_linenumber" name="699" href="#699">699

<TRUNCATED>


[48/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 08f87e1..d87b5c6 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -223,19 +223,19 @@
 <td>20</td></tr>
 <tr class="a">
 <th>Number of dependencies (NOD):</th>
-<td>145</td></tr>
+<td>189</td></tr>
 <tr class="b">
 <th>Number of unique artifacts (NOA):</th>
-<td>208</td></tr>
+<td>279</td></tr>
 <tr class="a">
 <th>Number of version-conflicting artifacts (NOC):</th>
-<td>25</td></tr>
+<td>28</td></tr>
 <tr class="b">
 <th>Number of SNAPSHOT artifacts (NOS):</th>
 <td>0</td></tr>
 <tr class="a">
 <th>Convergence (NOD/NOA):</th>
-<td><img alt="[Error]" src="images/icon_error_sml.gif" />&#160;<b>69 %</b></td></tr>
+<td><img alt="[Error]" src="images/icon_error_sml.gif" />&#160;<b>67 %</b></td></tr>
 <tr class="b">
 <th>Ready for release (100% convergence and no SNAPSHOTS):</th>
 <td><img alt="[Error]" src="images/icon_error_sml.gif" />&#160;<b>Error</b><br />You do not have 100% convergence.</td></tr></table></div>
@@ -249,23 +249,23 @@
 <td>
 <table border="0" class="table table-striped">
 <tr class="b">
-<td width="25%">1.27</td>
+<td width="25%">1.35</td>
 <td>
 <ol style="list-style-type: decimal">
-<li>org.apache.omid:omid-benchmarks:jar:0.9.0.0<br />\-&#160;org.testng:testng:jar:6.8.8:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.27:test - omitted for conflict with 1.35)<br /></li><br />
-<li>org.apache.omid:omid-hbase-client:jar:0.9.0.0<br />\-&#160;org.testng:testng:jar:6.8.8:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;com.beust:jcommander:jar:1.27:test<br /></li><br />
-<li>org.apache.omid:omid-hbase-coprocessor:jar:0.9.0.0<br />\-&#160;org.testng:testng:jar:6.8.8:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.27:test - omitted for conflict with 1.35)<br /></li><br />
-<li>org.apache.omid:omid-hbase-tools:jar:0.9.0.0<br />\-&#160;org.testng:testng:jar:6.8.8:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.27:test - omitted for conflict with 1.35)<br /></li><br />
-<li>org.apache.omid:omid-tso-server:jar:0.9.0.0<br />\-&#160;org.testng:testng:jar:6.8.8:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;com.beust:jcommander:jar:1.27:test<br /></li><br /></ol></td></tr>
+<li>org.apache.omid:omid-benchmarks:jar:0.8.2.11-SNAPSHOT<br />\-&#160;com.beust:jcommander:jar:1.35:compile<br /></li><br />
+<li>org.apache.omid:omid-hbase-client:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.apache.omid:omid-hbase-tools:jar:0.8.2.11-SNAPSHOT:test<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.35:compile - scope updated from test; omitted for duplicate)<br /></li><br />
+<li>org.apache.omid:omid-hbase-coprocessor:jar:0.8.2.11-SNAPSHOT<br />\-&#160;com.beust:jcommander:jar:1.35:compile<br /></li><br />
+<li>org.apache.omid:omid-hbase-tools:jar:0.8.2.11-SNAPSHOT<br />\-&#160;com.beust:jcommander:jar:1.35:compile<br /></li><br />
+<li>org.apache.omid:omid-tso-server:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.apache.omid:omid-hbase-tools:jar:0.8.2.11-SNAPSHOT:provided<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.35:compile - scope updated from provided; omitted for duplicate)<br /></li><br /></ol></td></tr>
 <tr class="a">
-<td width="25%">1.35</td>
+<td width="25%">1.48</td>
 <td>
 <ol style="list-style-type: decimal">
-<li>org.apache.omid:omid-benchmarks:jar:0.9.0.0<br />\-&#160;com.beust:jcommander:jar:1.35:compile<br /></li><br />
-<li>org.apache.omid:omid-hbase-client:jar:0.9.0.0<br />\-&#160;org.apache.omid:omid-hbase-tools:jar:0.9.0.0:test<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.35:compile - scope updated from test; omitted for duplicate)<br /></li><br />
-<li>org.apache.omid:omid-hbase-coprocessor:jar:0.9.0.0<br />\-&#160;com.beust:jcommander:jar:1.35:compile<br /></li><br />
-<li>org.apache.omid:omid-hbase-tools:jar:0.9.0.0<br />\-&#160;com.beust:jcommander:jar:1.35:compile<br /></li><br />
-<li>org.apache.omid:omid-tso-server:jar:0.9.0.0<br />\-&#160;org.apache.omid:omid-hbase-tools:jar:0.9.0.0:provided<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.35:compile - scope updated from provided; omitted for duplicate)<br /></li><br /></ol></td></tr></table></td></tr></table></div>
+<li>org.apache.omid:omid-benchmarks:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.testng:testng:jar:6.10:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.48:test - omitted for conflict with 1.35)<br /></li><br />
+<li>org.apache.omid:omid-hbase-client:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.testng:testng:jar:6.10:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;com.beust:jcommander:jar:1.48:test<br /></li><br />
+<li>org.apache.omid:omid-hbase-coprocessor:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.testng:testng:jar:6.10:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.48:test - omitted for conflict with 1.35)<br /></li><br />
+<li>org.apache.omid:omid-hbase-tools:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.testng:testng:jar:6.10:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;(com.beust:jcommander:jar:1.48:test - omitted for conflict with 1.35)<br /></li><br />
+<li>org.apache.omid:omid-tso-server:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.testng:testng:jar:6.10:test (scope not updated to compile)<br />&#160;&#160;&#160;\-&#160;com.beust:jcommander:jar:1.48:test<br /></li><br /></ol></td></tr></table></td></tr></table></div>
 <div class="section">
 <h4><a name="com.google.code.findbugs:jsr305"></a>com.google.code.findbugs:jsr305</h4>
 <table border="0" class="table table-striped">
@@ -277,16 +277,16 @@
 <td width="25%">1.3.9</td>
 <td>
 <ol style="list-style-type: decimal">
-<li>org.apache.omid:omid-hbase-client:jar:0.9.0.0<br />\-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:1.3.9:compile - omitted for conflict with 3.0.1)<br /></li><br />
-<li>org.apache.omid:omid-hbase-coprocessor:jar:0.9.0.0<br />\-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;com.google.code.findbugs:jsr305:jar:1.3.9:compile<br /></li><br />
-<li>org.apache.omid:omid-tso-server:jar:0.9.0.0<br />\-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:1.3.9:compile - omitted for conflict with 3.0.1)<br /></li><br /></ol></td></tr>
+<li>org.apache.omid:omid-hbase-client:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:1.3.9:compile - omitted for conflict with 3.0.1)<br /></li><br />
+<li>org.apache.omid:omid-hbase-coprocessor:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;com.google.code.findbugs:jsr305:jar:1.3.9:compile<br /></li><br />
+<li>org.apache.omid:omid-tso-server:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:1.3.9:compile - omitted for conflict with 3.0.1)<br /></li><br /></ol></td></tr>
 <tr class="b">
 <td width="25%">3.0.1</td>
 <td>
 <ol style="list-style-type: decimal">
-<li>org.apache.omid:omid-hbase-client:jar:0.9.0.0<br />+-&#160;org.apache.omid:omid-tso-server:jar:0.9.0.0:test<br />|&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:3.0.1:compile - scope updated from test; omitted for duplicate)<br />+-&#160;org.apache.omid:omid-tso-server:test-jar:tests:0.9.0.0:test<br />|&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:3.0.1:compile - scope updated from test; omitted for duplicate)<br />\-&#160;com.google.code.findbugs:jsr305:jar:3.0.1:test (scope not updated to compile)<br /></li><br />
-<li>org.apache.omid:omid-hbase-coprocessor:jar:0.9.0.0<br />+-&#160;org.apache.omid:omid-tso-server:jar:0.9.0.0:test<br />|&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:3.0.1:compile - scope updated from test; omitted for duplicate)<br />\-&#160;org.apache.omid:omid-tso-server:test-jar:tests:0.9.0.0:test<br />&#160;&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:3.0.1:compile - scope updated from test; omitted for duplicate)<br /></li><br />
-<li>org.apache.omid:omid-tso-server:jar:0.9.0.0<br />\-&#160;com.google.code.findbugs:jsr305:jar:3.0.1:compile<br /></li><br /></ol></td></tr></table></td></tr></table></div>
+<li>org.apache.omid:omid-hbase-client:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.omid:omid-tso-server:jar:0.8.2.11-SNAPSHOT:test<br />|&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:3.0.1:compile - scope updated from test; omitted for duplicate)<br />+-&#160;org.apache.omid:omid-tso-server:test-jar:tests:0.8.2.11-SNAPSHOT:test<br />|&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:3.0.1:compile - scope updated from test; omitted for duplicate)<br />\-&#160;com.google.code.findbugs:jsr305:jar:3.0.1:test (scope not updated to compile)<br /></li><br />
+<li>org.apache.omid:omid-hbase-coprocessor:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.omid:omid-tso-server:jar:0.8.2.11-SNAPSHOT:test<br />|&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:3.0.1:compile - scope updated from test; omitted for duplicate)<br />\-&#160;org.apache.omid:omid-tso-server:test-jar:tests:0.8.2.11-SNAPSHOT:test<br />&#160;&#160;&#160;\-&#160;(com.google.code.findbugs:jsr305:jar:3.0.1:compile - scope updated from test; omitted for duplicate)<br /></li><br />
+<li>org.apache.omid:omid-tso-server:jar:0.8.2.11-SNAPSHOT<br />\-&#160;com.google.code.findbugs:jsr305:jar:3.0.1:compile<br /></li><br /></ol></td></tr></table></td></tr></table></div>
 <div class="section">
 <h4><a name="com.google.guava:guava"></a>com.google.guava:guava</h4>
 <table border="0" class="table table-striped">
@@ -298,62 +298,62 @@
 <td width="25%">11.0.2</td>
 <td>
 <ol style="list-style-type: decimal">
-<li>org.apache.omid:omid-benchmarks:jar:0.9.0.0<br />\-&#160;org.apache.omid:omid-hbase-commit-table:jar:0.9.0.0:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#
 160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-examples:jar:0.9.0.0<br />\-&#160;org.apache.omid:omid-hbase-client:jar:0.9.0.0:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#16
 0;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-hbase-client:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.3.1:test<br />&#160;&#160;&#160;+-&#16
 0;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#1
 60;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted f
 or conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-hbase-commit-table:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.3.1:test<br />&#160;&#160;&#160;
 +-&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#1
 60;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omi
 tted for conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-hbase-common:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.3.1:test<br />&#160;&#160;&#160;+-&#16
 0;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#1
 60;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted f
 or conflict with 12.0.1)<br /></li><br />
-<li>org.apache.omid:omid-hbase-coprocessor:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />+-&#160;org.apache.hbase:hbase-server:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-client:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:compi
 le<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for confli
 ct with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.3.1:test<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for
  conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160
 ;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-hbase-tools:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />+-&#160;org.apache.hbase:hbase-testing-util:jar:1.3.1:test<br />|&#160;&#160;+-&#160;org.
 apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-application
 historyservice:jar:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.omid:omid-hbase1-shims:jar:0.9.0.0:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hbase:hbase-server:jar:1.3.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-client:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.
 5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#
 160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-hbase1-shims:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-common:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />\-&#160;org.apache.hbase:hbase-server:jar:1.3.1:compile<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-client:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2
 .5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.g
 uava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br /></li><br />
-<li>org.apache.omid:omid-shims-aggregator:pom:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-common:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />\-&#160;org.apache.hbase:hbase-server:jar:1.3.1:compile<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-client:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:j
 ar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.goog
 le.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br /></li><br />
-<li>org.apache.omid:omid-timestamp-storage:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 16.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 16.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 16.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.3.1:test<br />&#160;&#160;&#160;+
 -&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#16
 0;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 60;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omit
 ted for conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-tso-server:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.3.1:test<br />&#160;&#160;&#160;+-&#160;
 org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160
 ;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 0;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for
  conflict with 14.0.1)<br /></li><br /></ol></td></tr>
+<li>org.apache.omid:omid-benchmarks:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.apache.omid:omid-hbase-commit-table:jar:0.8.2.11-SNAPSHOT:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict 
 with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br /></li><br />
+<li>org.apache.omid:omid-examples:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.apache.omid:omid-hbase-client:jar:0.8.2.11-SNAPSHOT:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.
 0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br /></li><br />
+<li>org.apache.omid:omid-hbase-client:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:test<br />&#160;&#160;&#
 160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160
 ;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#16
 0;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test -
  omitted for conflict with 14.0.1)<br /></li><br />
+<li>org.apache.omid:omid-hbase-commit-table:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:test<br />&#160;&#
 160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160
 ;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#16
 0;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:
 test - omitted for conflict with 14.0.1)<br /></li><br />
+<li>org.apache.omid:omid-hbase-common:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:test<br />&#160;&#160;&#
 160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160
 ;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#16
 0;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test -
  omitted for conflict with 12.0.1)<br /></li><br />
+<li>org.apache.omid:omid-hbase-coprocessor:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />+-&#160;org.apache.hbase:hbase-server:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-client:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2
 .5.1:compile<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted 
 for conflict with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:test (scope not updated to compile)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.
 guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)
 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br /></li><br />
+<li>org.apache.omid:omid-hbase-tools:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />+-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:test (scope not updated t
 o compile)<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apa
 che.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.omid:omid-hbase1-shims:jar:0.8.2.11-SNAPSHOT:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hbase:hbase-server:jar:1.2.5:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-client:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;o
 rg.apache.hadoop:hadoop-mapreduce-client-app:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:
 compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br /></li><br />
+<li>org.apache.omid:omid-hbase1-shims:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-common:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />+-&#160;org.apache.hbase:hbase-server:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-client:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict 
 with 12.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:compile<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted 
 for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#16
 0;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:
 jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br /></li><br />
+<li>org.apache.omid:omid-hbase2-shims:jar:0.8.2.11-SNAPSHOT<br />\-&#160;org.apache.hbase:hbase-endpoint:jar:2.0.1:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-common:jar:2.7.4:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 16.0.1)<br /></li><br />
+<li>org.apache.omid:omid-shims-aggregator:pom:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-common:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />+-&#160;org.apache.hbase:hbase-server:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-client:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for confl
 ict with 12.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:compile<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omit
 ted for conflict with 12.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:compile<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;
 &#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:gu
 ava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 12.0.1)<br /></li><br />
+<li>org.apache.omid:omid-timestamp-storage:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 16.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 16.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 16.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:test<br />&#160;&#1
 60;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;
 &#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160
 ;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:t
 est - omitted for conflict with 14.0.1)<br /></li><br />
+<li>org.apache.omid:omid-tso-server:jar:0.8.2.11-SNAPSHOT<br />+-&#160;org.apache.hbase:hbase-client:jar:1.2.5:compile<br />|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:jar:2.5.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-common:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-api:jar:2.5.1:compile<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:compile - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.2.5:test<br />&#160;&#160;&#16
 0;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-client:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-common:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;&
 #160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:jar:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-minicluster:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hadoop:hadoop-common:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 &#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.5.1:test<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:11.0.2:test - o
 mitted for conflict with 14.0.1)<br /></li><br /></ol></td></tr>
 <tr class="a">
 <td width="25%">12.0.1</td>
 <td>
 <ol style="list-style-type: decimal">
-<li>org.apache.omid:omid-benchmarks:jar:0.9.0.0<br />\-&#160;org.apache.omid:omid-hbase-commit-table:jar:0.9.0.0:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hbase:hbase-common:jar:1.3.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-examples:jar:0.9.0.0<br />\-&#160;org.apache.omid:omid-hbase-client:jar:0.9.0.0:compile<br />&#160;&#160;&#160;\-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;+-&#160;org.apache.hbase:hbase-common:jar:1.3.1:compile<br />&#160;&#160;&#160;&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;&#160;&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)<br /></li><br />
-<li>org.apache.omid:omid-hbase-client:jar:0.9.0.0<br />+-&#160;org.apache.hbase:hbase-client:jar:1.3.1:compile<br />|&#160;&#160;+-&#160;org.apache.hbase:hbase-common:jar:1.3.1:compile<br />|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)<br />|&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:compile - omitted for conflict with 14.0.1)<br />\-&#160;org.apache.hbase:hbase-testing-util:jar:1.3.1:test<br />&#160;&#160;&#160;+-&#160;org.apache.hbase:hbase-common:test-jar:tests:1.3.1:test<br />&#160;&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;+-&#160;org.apache.hbase:hbase-server:jar:1.3.1:test<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hbase:hbase-procedure:jar:1.3.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;+-&#160;org.apache.hbase:hbase-common:jar:tests:1.3.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160
 ;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:test - omitted for conflict with 14.0.1)<br />&#160;&#160;&#160;|&#160;&#160;+-&#160;org.apache.hbase:hbase-prefix-tree:jar:1.3.1:test<br />&#160;&#160;&#160;|&#160;&#160;|&#160;&#160;\-&#160;(com.google.guava:guava:jar:12.0.1:test - omitted for conflict with 14.0.1)<br />&#160;&#160;

<TRUNCATED>


[39/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestDeletion.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestDeletion.html b/xref-test/org/apache/omid/transaction/TestDeletion.html
index 86c3811..2d9f6f1 100644
--- a/xref-test/org/apache/omid/transaction/TestDeletion.html
+++ b/xref-test/org/apache/omid/transaction/TestDeletion.html
@@ -27,25 +27,25 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTable;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConflictDetectionLevel;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="39" href="#39">39</a>  
 <a class="jxr_linenumber" name="40" href="#40">40</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
 <a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">TestDeletion</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
@@ -57,7 +57,7 @@
 <a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> byte[] colA = Bytes.toBytes(<span class="jxr_string">"testdataA"</span>);
 <a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> byte[] colB = Bytes.toBytes(<span class="jxr_string">"testdataB"</span>);
 <a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> byte[] modrow = Bytes.toBytes(<span class="jxr_string">"test-del"</span> + 3);
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> byte[] modrow = Bytes.toBytes(<span class="jxr_string">"test-del"</span> + 0);
 <a class="jxr_linenumber" name="51" href="#51">51</a>  
 <a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> {
 <a class="jxr_linenumber" name="53" href="#53">53</a>  
@@ -72,239 +72,414 @@
 <a class="jxr_linenumber" name="62" href="#62">62</a>      }
 <a class="jxr_linenumber" name="63" href="#63">63</a>  
 <a class="jxr_linenumber" name="64" href="#64">64</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteFamily(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteFamilyRow(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="66" href="#66">66</a>  
 <a class="jxr_linenumber" name="67" href="#67">67</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="68" href="#68">68</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="68" href="#68">68</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>          Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="71" href="#71">71</a>          LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
-<a class="jxr_linenumber" name="72" href="#72">72</a>  
-<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">int</strong> rowsWritten = 10;
-<a class="jxr_linenumber" name="74" href="#74">74</a>          <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
-<a class="jxr_linenumber" name="75" href="#75">75</a>          <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColB = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famB, colB);
-<a class="jxr_linenumber" name="76" href="#76">76</a>          writeRows(tt, t1, rowsWritten, famColA, famColB);
-<a class="jxr_linenumber" name="77" href="#77">77</a>          tm.commit(t1);
-<a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>          Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="80" href="#80">80</a>          Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
-<a class="jxr_linenumber" name="81" href="#81">81</a>          d.deleteFamily(famA);
-<a class="jxr_linenumber" name="82" href="#82">82</a>          tt.delete(t2, d);
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>          Transaction tscan = tm.begin();
-<a class="jxr_linenumber" name="85" href="#85">85</a>          ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
-<a class="jxr_linenumber" name="86" href="#86">86</a>  
-<a class="jxr_linenumber" name="87" href="#87">87</a>          Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA, famColB);
-<a class="jxr_linenumber" name="88" href="#88">88</a>          assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
-<a class="jxr_linenumber" name="89" href="#89">89</a>          assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="70" href="#70">70</a>          ((HBaseTransactionManager) tm).setConflictDetectionLevel(ConflictDetectionLevel.ROW);
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>          Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="73" href="#73">73</a>          LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>          <strong class="jxr_keyword">int</strong> rowsWritten = 1;
+<a class="jxr_linenumber" name="76" href="#76">76</a>          <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          writeRows(tt, t1, rowsWritten, famColA);
+<a class="jxr_linenumber" name="78" href="#78">78</a>          tm.commit(t1);
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>          Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="81" href="#81">81</a>          Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="82" href="#82">82</a>          d.addFamily(famA);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          tt.delete(t2, d);
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>          Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="86" href="#86">86</a>          ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>          Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA);
+<a class="jxr_linenumber" name="89" href="#89">89</a>          assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
 <a class="jxr_linenumber" name="90" href="#90">90</a>          tm.commit(t2);
 <a class="jxr_linenumber" name="91" href="#91">91</a>  
 <a class="jxr_linenumber" name="92" href="#92">92</a>          tscan = tm.begin();
 <a class="jxr_linenumber" name="93" href="#93">93</a>          rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
 <a class="jxr_linenumber" name="94" href="#94">94</a>  
-<a class="jxr_linenumber" name="95" href="#95">95</a>          count = countColsInRows(rs, famColA, famColB);
-<a class="jxr_linenumber" name="96" href="#96">96</a>          assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), (rowsWritten - 1), <span class="jxr_string">"ColA count should be equal to rowsWritten - 1"</span>);
-<a class="jxr_linenumber" name="97" href="#97">97</a>          assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="95" href="#95">95</a>          count = countColsInRows(rs, famColA);
+<a class="jxr_linenumber" name="96" href="#96">96</a>          Integer countFamColA = count.get(famColA);
+<a class="jxr_linenumber" name="97" href="#97">97</a>          assertEquals(countFamColA, <strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>      }
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteColumn(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="105" href="#105">105</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>         Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="108" href="#108">108</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          Transaction t3 = tm.begin();
+<a class="jxr_linenumber" name="100" href="#100">100</a>         d.addFamily(famA);
+<a class="jxr_linenumber" name="101" href="#101">101</a>         tt.delete(t3, d);
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>         tscan = tm.begin();
+<a class="jxr_linenumber" name="104" href="#104">104</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         count = countColsInRows(rs, famColA);
+<a class="jxr_linenumber" name="107" href="#107">107</a>         countFamColA = count.get(famColA);
+<a class="jxr_linenumber" name="108" href="#108">108</a>         assertEquals(countFamColA, <strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
+<a class="jxr_linenumber" name="110" href="#110">110</a>         ((HBaseTransactionManager) tm).setConflictDetectionLevel(ConflictDetectionLevel.CELL);
 <a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
-<a class="jxr_linenumber" name="113" href="#113">113</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColB = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colB);
-<a class="jxr_linenumber" name="114" href="#114">114</a>         writeRows(tt, t1, rowsWritten, famColA, famColB);
-<a class="jxr_linenumber" name="115" href="#115">115</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="112" href="#112">112</a>     }
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteFamilyCell(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="116" href="#116">116</a> 
-<a class="jxr_linenumber" name="117" href="#117">117</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="118" href="#118">118</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
-<a class="jxr_linenumber" name="119" href="#119">119</a>         d.deleteColumn(famA, colA);
-<a class="jxr_linenumber" name="120" href="#120">120</a>         tt.delete(t2, d);
-<a class="jxr_linenumber" name="121" href="#121">121</a> 
-<a class="jxr_linenumber" name="122" href="#122">122</a>         Transaction tscan = tm.begin();
-<a class="jxr_linenumber" name="123" href="#123">123</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
-<a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a>         Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA, famColB);
-<a class="jxr_linenumber" name="126" href="#126">126</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
-<a class="jxr_linenumber" name="127" href="#127">127</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
-<a class="jxr_linenumber" name="128" href="#128">128</a>         tm.commit(t2);
-<a class="jxr_linenumber" name="129" href="#129">129</a> 
-<a class="jxr_linenumber" name="130" href="#130">130</a>         tscan = tm.begin();
-<a class="jxr_linenumber" name="131" href="#131">131</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="117" href="#117">117</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="118" href="#118">118</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="121" href="#121">121</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 1;
+<a class="jxr_linenumber" name="124" href="#124">124</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
+<a class="jxr_linenumber" name="125" href="#125">125</a>         writeRows(tt, t1, rowsWritten, famColA);
+<a class="jxr_linenumber" name="126" href="#126">126</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="129" href="#129">129</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="130" href="#130">130</a>         d.addFamily(famA);
+<a class="jxr_linenumber" name="131" href="#131">131</a>         tt.delete(t2, d);
 <a class="jxr_linenumber" name="132" href="#132">132</a> 
-<a class="jxr_linenumber" name="133" href="#133">133</a>         count = countColsInRows(rs, famColA, famColB);
-<a class="jxr_linenumber" name="134" href="#134">134</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), (rowsWritten - 1), <span class="jxr_string">"ColA count should be equal to rowsWritten - 1"</span>);
-<a class="jxr_linenumber" name="135" href="#135">135</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
-<a class="jxr_linenumber" name="136" href="#136">136</a> 
-<a class="jxr_linenumber" name="137" href="#137">137</a>     }
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="140" href="#140">140</a> <em class="jxr_javadoccomment">     * This test is very similar to #runTestDeleteColumn() but exercises Delete#deleteColumns()</em>
-<a class="jxr_linenumber" name="141" href="#141">141</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="142" href="#142">142</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="143" href="#143">143</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteColumns(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="144" href="#144">144</a> 
-<a class="jxr_linenumber" name="145" href="#145">145</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="146" href="#146">146</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="147" href="#147">147</a> 
-<a class="jxr_linenumber" name="148" href="#148">148</a>         Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="149" href="#149">149</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="133" href="#133">133</a>         Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="134" href="#134">134</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="135" href="#135">135</a> 
+<a class="jxr_linenumber" name="136" href="#136">136</a>         Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA);
+<a class="jxr_linenumber" name="137" href="#137">137</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="138" href="#138">138</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>         tscan = tm.begin();
+<a class="jxr_linenumber" name="141" href="#141">141</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="142" href="#142">142</a> 
+<a class="jxr_linenumber" name="143" href="#143">143</a>         count = countColsInRows(rs, famColA);
+<a class="jxr_linenumber" name="144" href="#144">144</a>         Integer countFamColA = count.get(famColA);
+<a class="jxr_linenumber" name="145" href="#145">145</a>         assertEquals(countFamColA, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="146" href="#146">146</a> 
+<a class="jxr_linenumber" name="147" href="#147">147</a>         Transaction t3 = tm.begin();
+<a class="jxr_linenumber" name="148" href="#148">148</a>         d.addFamily(famA);
+<a class="jxr_linenumber" name="149" href="#149">149</a>         tt.delete(t3, d);
 <a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
-<a class="jxr_linenumber" name="152" href="#152">152</a> 
-<a class="jxr_linenumber" name="153" href="#153">153</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
-<a class="jxr_linenumber" name="154" href="#154">154</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColB = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colB);
-<a class="jxr_linenumber" name="155" href="#155">155</a>         writeRows(tt, t1, rowsWritten, famColA, famColB);
-<a class="jxr_linenumber" name="156" href="#156">156</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="151" href="#151">151</a>         tscan = tm.begin();
+<a class="jxr_linenumber" name="152" href="#152">152</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="153" href="#153">153</a> 
+<a class="jxr_linenumber" name="154" href="#154">154</a>         count = countColsInRows(rs, famColA);
+<a class="jxr_linenumber" name="155" href="#155">155</a>         countFamColA = count.get(famColA);
+<a class="jxr_linenumber" name="156" href="#156">156</a>         assertEquals(countFamColA, <strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="157" href="#157">157</a> 
-<a class="jxr_linenumber" name="158" href="#158">158</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="159" href="#159">159</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
-<a class="jxr_linenumber" name="160" href="#160">160</a>         d.deleteColumns(famA, colA);
-<a class="jxr_linenumber" name="161" href="#161">161</a>         tt.delete(t2, d);
+<a class="jxr_linenumber" name="158" href="#158">158</a>     }
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteFamily(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="162" href="#162">162</a> 
-<a class="jxr_linenumber" name="163" href="#163">163</a>         Transaction tscan = tm.begin();
-<a class="jxr_linenumber" name="164" href="#164">164</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="163" href="#163">163</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="164" href="#164">164</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="165" href="#165">165</a> 
-<a class="jxr_linenumber" name="166" href="#166">166</a>         Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA, famColB);
-<a class="jxr_linenumber" name="167" href="#167">167</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
-<a class="jxr_linenumber" name="168" href="#168">168</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
-<a class="jxr_linenumber" name="169" href="#169">169</a>         tm.commit(t2);
-<a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>         tscan = tm.begin();
-<a class="jxr_linenumber" name="172" href="#172">172</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
-<a class="jxr_linenumber" name="173" href="#173">173</a> 
-<a class="jxr_linenumber" name="174" href="#174">174</a>         count = countColsInRows(rs, famColA, famColB);
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), (rowsWritten - 1), <span class="jxr_string">"ColA count should be equal to rowsWritten - 1"</span>);
-<a class="jxr_linenumber" name="177" href="#177">177</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
-<a class="jxr_linenumber" name="178" href="#178">178</a> 
-<a class="jxr_linenumber" name="179" href="#179">179</a>     }
-<a class="jxr_linenumber" name="180" href="#180">180</a> 
-<a class="jxr_linenumber" name="181" href="#181">181</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteRow(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="183" href="#183">183</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="184" href="#184">184</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="185" href="#185">185</a> 
-<a class="jxr_linenumber" name="186" href="#186">186</a>         Transaction t1 = tm.begin();
-<a class="jxr_linenumber" name="187" href="#187">187</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
-<a class="jxr_linenumber" name="188" href="#188">188</a> 
-<a class="jxr_linenumber" name="189" href="#189">189</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
+<a class="jxr_linenumber" name="166" href="#166">166</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="167" href="#167">167</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="168" href="#168">168</a> 
+<a class="jxr_linenumber" name="169" href="#169">169</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
+<a class="jxr_linenumber" name="170" href="#170">170</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
+<a class="jxr_linenumber" name="171" href="#171">171</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColB = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famB, colB);
+<a class="jxr_linenumber" name="172" href="#172">172</a>         writeRows(tt, t1, rowsWritten, famColA, famColB);
+<a class="jxr_linenumber" name="173" href="#173">173</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="176" href="#176">176</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         d.addFamily(famA);
+<a class="jxr_linenumber" name="178" href="#178">178</a>         tt.delete(t2, d);
+<a class="jxr_linenumber" name="179" href="#179">179</a> 
+<a class="jxr_linenumber" name="180" href="#180">180</a>         Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="181" href="#181">181</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="182" href="#182">182</a> 
+<a class="jxr_linenumber" name="183" href="#183">183</a>         Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="184" href="#184">184</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="185" href="#185">185</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="186" href="#186">186</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="187" href="#187">187</a> 
+<a class="jxr_linenumber" name="188" href="#188">188</a>         tscan = tm.begin();
+<a class="jxr_linenumber" name="189" href="#189">189</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
 <a class="jxr_linenumber" name="190" href="#190">190</a> 
-<a class="jxr_linenumber" name="191" href="#191">191</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
-<a class="jxr_linenumber" name="192" href="#192">192</a>         writeRows(tt, t1, rowsWritten, famColA);
-<a class="jxr_linenumber" name="193" href="#193">193</a> 
-<a class="jxr_linenumber" name="194" href="#194">194</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="191" href="#191">191</a>         count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="192" href="#192">192</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), (rowsWritten - 1), <span class="jxr_string">"ColA count should be equal to rowsWritten - 1"</span>);
+<a class="jxr_linenumber" name="193" href="#193">193</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="194" href="#194">194</a>     }
 <a class="jxr_linenumber" name="195" href="#195">195</a> 
-<a class="jxr_linenumber" name="196" href="#196">196</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="197" href="#197">197</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
-<a class="jxr_linenumber" name="198" href="#198">198</a>         tt.delete(t2, d);
-<a class="jxr_linenumber" name="199" href="#199">199</a> 
-<a class="jxr_linenumber" name="200" href="#200">200</a>         Transaction tscan = tm.begin();
-<a class="jxr_linenumber" name="201" href="#201">201</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
-<a class="jxr_linenumber" name="202" href="#202">202</a> 
-<a class="jxr_linenumber" name="203" href="#203">203</a>         <strong class="jxr_keyword">int</strong> rowsRead = countRows(rs);
-<a class="jxr_linenumber" name="204" href="#204">204</a>         assertTrue(rowsRead == rowsWritten, <span class="jxr_string">"Expected "</span> + rowsWritten + <span class="jxr_string">" rows but "</span> + rowsRead + <span class="jxr_string">" found"</span>);
-<a class="jxr_linenumber" name="205" href="#205">205</a> 
-<a class="jxr_linenumber" name="206" href="#206">206</a>         tm.commit(t2);
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>         tscan = tm.begin();
-<a class="jxr_linenumber" name="209" href="#209">209</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
-<a class="jxr_linenumber" name="210" href="#210">210</a> 
-<a class="jxr_linenumber" name="211" href="#211">211</a>         rowsRead = countRows(rs);
-<a class="jxr_linenumber" name="212" href="#212">212</a>         assertTrue(rowsRead == (rowsWritten - 1), <span class="jxr_string">"Expected "</span> + (rowsWritten - 1) + <span class="jxr_string">" rows but "</span> + rowsRead + <span class="jxr_string">" found"</span>);
-<a class="jxr_linenumber" name="213" href="#213">213</a> 
-<a class="jxr_linenumber" name="214" href="#214">214</a>     }
-<a class="jxr_linenumber" name="215" href="#215">215</a> 
-<a class="jxr_linenumber" name="216" href="#216">216</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDeletionOfNonExistingColumnFamilyDoesNotWriteToHBase(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="218" href="#218">218</a> 
-<a class="jxr_linenumber" name="219" href="#219">219</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="220" href="#220">220</a>         <em class="jxr_comment">// Setup initial environment for the test</em>
-<a class="jxr_linenumber" name="221" href="#221">221</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="222" href="#222">222</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="223" href="#223">223</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="224" href="#224">224</a> 
-<a class="jxr_linenumber" name="225" href="#225">225</a>         Transaction tx1 = tm.begin();
-<a class="jxr_linenumber" name="226" href="#226">226</a>         LOG.info(<span class="jxr_string">"{} writing initial data created "</span>, tx1);
-<a class="jxr_linenumber" name="227" href="#227">227</a>         Put p = <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(<span class="jxr_string">"row1"</span>));
-<a class="jxr_linenumber" name="228" href="#228">228</a>         p.add(famA, colA, data1);
-<a class="jxr_linenumber" name="229" href="#229">229</a>         txTable.put(tx1, p);
-<a class="jxr_linenumber" name="230" href="#230">230</a>         tm.commit(tx1);
-<a class="jxr_linenumber" name="231" href="#231">231</a> 
-<a class="jxr_linenumber" name="232" href="#232">232</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="233" href="#233">233</a>         <em class="jxr_comment">// Try to delete a non existing CF</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="235" href="#235">235</a>         Transaction deleteTx = tm.begin();
-<a class="jxr_linenumber" name="236" href="#236">236</a>         LOG.info(<span class="jxr_string">"{} trying to delete a non-existing family created "</span>, deleteTx);
-<a class="jxr_linenumber" name="237" href="#237">237</a>         Delete del = <strong class="jxr_keyword">new</strong> Delete(Bytes.toBytes(<span class="jxr_string">"row1"</span>));
-<a class="jxr_linenumber" name="238" href="#238">238</a>         del.deleteFamily(famB);
-<a class="jxr_linenumber" name="239" href="#239">239</a>         <em class="jxr_comment">// This delete should not put data on HBase</em>
-<a class="jxr_linenumber" name="240" href="#240">240</a>         txTable.delete(deleteTx, del);
+<a class="jxr_linenumber" name="196" href="#196">196</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteFamilyRowLevelCA(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="198" href="#198">198</a> 
+<a class="jxr_linenumber" name="199" href="#199">199</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="200" href="#200">200</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>         ((HBaseTransactionManager) tm).setConflictDetectionLevel(ConflictDetectionLevel.ROW);
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="205" href="#205">205</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
+<a class="jxr_linenumber" name="208" href="#208">208</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
+<a class="jxr_linenumber" name="209" href="#209">209</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColB = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famB, colB);
+<a class="jxr_linenumber" name="210" href="#210">210</a>         writeRows(tt, t1, rowsWritten, famColA, famColB);
+<a class="jxr_linenumber" name="211" href="#211">211</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="212" href="#212">212</a> 
+<a class="jxr_linenumber" name="213" href="#213">213</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="214" href="#214">214</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="215" href="#215">215</a>         d.addFamily(famA);
+<a class="jxr_linenumber" name="216" href="#216">216</a>         tt.delete(t2, d);
+<a class="jxr_linenumber" name="217" href="#217">217</a> 
+<a class="jxr_linenumber" name="218" href="#218">218</a>         Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="219" href="#219">219</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="220" href="#220">220</a> 
+<a class="jxr_linenumber" name="221" href="#221">221</a>         Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="222" href="#222">222</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="223" href="#223">223</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="224" href="#224">224</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="225" href="#225">225</a> 
+<a class="jxr_linenumber" name="226" href="#226">226</a>         tscan = tm.begin();
+<a class="jxr_linenumber" name="227" href="#227">227</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="228" href="#228">228</a> 
+<a class="jxr_linenumber" name="229" href="#229">229</a>         count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="230" href="#230">230</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), (rowsWritten - 1), <span class="jxr_string">"ColA count should be equal to rowsWritten - 1"</span>);
+<a class="jxr_linenumber" name="231" href="#231">231</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="232" href="#232">232</a> 
+<a class="jxr_linenumber" name="233" href="#233">233</a>         ((HBaseTransactionManager) tm).setConflictDetectionLevel(ConflictDetectionLevel.CELL);
+<a class="jxr_linenumber" name="234" href="#234">234</a>     }
+<a class="jxr_linenumber" name="235" href="#235">235</a> 
+<a class="jxr_linenumber" name="236" href="#236">236</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="237" href="#237">237</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteFamilyAborts(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="238" href="#238">238</a> 
+<a class="jxr_linenumber" name="239" href="#239">239</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="240" href="#240">240</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="241" href="#241">241</a> 
-<a class="jxr_linenumber" name="242" href="#242">242</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="243" href="#243">243</a>         <em class="jxr_comment">// Check data has not been written to HBase</em>
-<a class="jxr_linenumber" name="244" href="#244">244</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="245" href="#245">245</a>         HTable table = <strong class="jxr_keyword">new</strong> HTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="246" href="#246">246</a>         Get get = <strong class="jxr_keyword">new</strong> Get(Bytes.toBytes(<span class="jxr_string">"row1"</span>));
-<a class="jxr_linenumber" name="247" href="#247">247</a>         get.setTimeStamp(deleteTx.getTransactionId());
-<a class="jxr_linenumber" name="248" href="#248">248</a>         Result result = table.get(get);
-<a class="jxr_linenumber" name="249" href="#249">249</a>         assertTrue(result.isEmpty());
-<a class="jxr_linenumber" name="250" href="#250">250</a> 
-<a class="jxr_linenumber" name="251" href="#251">251</a>     }
-<a class="jxr_linenumber" name="252" href="#252">252</a> 
-<a class="jxr_linenumber" name="253" href="#253">253</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> countRows(ResultScanner rs) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="254" href="#254">254</a>         <strong class="jxr_keyword">int</strong> count;
-<a class="jxr_linenumber" name="255" href="#255">255</a>         Result r = rs.next();
-<a class="jxr_linenumber" name="256" href="#256">256</a>         count = 0;
-<a class="jxr_linenumber" name="257" href="#257">257</a>         <strong class="jxr_keyword">while</strong> (r != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="258" href="#258">258</a>             count++;
-<a class="jxr_linenumber" name="259" href="#259">259</a>             LOG.trace(<span class="jxr_string">"row: "</span> + Bytes.toString(r.getRow()) + <span class="jxr_string">" count: "</span> + count);
-<a class="jxr_linenumber" name="260" href="#260">260</a>             r = rs.next();
-<a class="jxr_linenumber" name="261" href="#261">261</a>         }
-<a class="jxr_linenumber" name="262" href="#262">262</a>         <strong class="jxr_keyword">return</strong> count;
-<a class="jxr_linenumber" name="263" href="#263">263</a>     }
-<a class="jxr_linenumber" name="264" href="#264">264</a> 
-<a class="jxr_linenumber" name="265" href="#265">265</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeRows(TTable tt, Transaction t1, <strong class="jxr_keyword">int</strong> rowcount, FamCol... famCols) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="266" href="#266">266</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; rowcount; i++) {
-<a class="jxr_linenumber" name="267" href="#267">267</a>             byte[] row = Bytes.toBytes(<span class="jxr_string">"test-del"</span> + i);
-<a class="jxr_linenumber" name="268" href="#268">268</a> 
-<a class="jxr_linenumber" name="269" href="#269">269</a>             Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="270" href="#270">270</a>             <strong class="jxr_keyword">for</strong> (FamCol col : famCols) {
-<a class="jxr_linenumber" name="271" href="#271">271</a>                 p.add(col.fam, col.col, data1);
-<a class="jxr_linenumber" name="272" href="#272">272</a>             }
-<a class="jxr_linenumber" name="273" href="#273">273</a>             tt.put(t1, p);
-<a class="jxr_linenumber" name="274" href="#274">274</a>         }
+<a class="jxr_linenumber" name="242" href="#242">242</a>         ((HBaseTransactionManager) tm).setConflictDetectionLevel(ConflictDetectionLevel.ROW);
+<a class="jxr_linenumber" name="243" href="#243">243</a> 
+<a class="jxr_linenumber" name="244" href="#244">244</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="245" href="#245">245</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="246" href="#246">246</a> 
+<a class="jxr_linenumber" name="247" href="#247">247</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
+<a class="jxr_linenumber" name="248" href="#248">248</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
+<a class="jxr_linenumber" name="249" href="#249">249</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColB = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famB, colB);
+<a class="jxr_linenumber" name="250" href="#250">250</a>         writeRows(tt, t1, rowsWritten, famColA, famColB);
+<a class="jxr_linenumber" name="251" href="#251">251</a> 
+<a class="jxr_linenumber" name="252" href="#252">252</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="253" href="#253">253</a> 
+<a class="jxr_linenumber" name="254" href="#254">254</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="255" href="#255">255</a> 
+<a class="jxr_linenumber" name="256" href="#256">256</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="257" href="#257">257</a>         d.addFamily(famA);
+<a class="jxr_linenumber" name="258" href="#258">258</a>         tt.delete(t2, d);
+<a class="jxr_linenumber" name="259" href="#259">259</a> 
+<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="261" href="#261">261</a>             tm.commit(t2);
+<a class="jxr_linenumber" name="262" href="#262">262</a>         } <strong class="jxr_keyword">catch</strong>(RollbackException e) {
+<a class="jxr_linenumber" name="263" href="#263">263</a>             System.out.println(<span class="jxr_string">"Rollback"</span>);
+<a class="jxr_linenumber" name="264" href="#264">264</a>             System.out.flush();
+<a class="jxr_linenumber" name="265" href="#265">265</a>         }
+<a class="jxr_linenumber" name="266" href="#266">266</a> 
+<a class="jxr_linenumber" name="267" href="#267">267</a>         Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="268" href="#268">268</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="269" href="#269">269</a> 
+<a class="jxr_linenumber" name="270" href="#270">270</a>         Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="271" href="#271">271</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="272" href="#272">272</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="273" href="#273">273</a> 
+<a class="jxr_linenumber" name="274" href="#274">274</a>         ((HBaseTransactionManager) tm).setConflictDetectionLevel(ConflictDetectionLevel.CELL);
 <a class="jxr_linenumber" name="275" href="#275">275</a>     }
 <a class="jxr_linenumber" name="276" href="#276">276</a> 
-<a class="jxr_linenumber" name="277" href="#277">277</a>     <strong class="jxr_keyword">private</strong> Map&lt;FamCol, Integer&gt; countColsInRows(ResultScanner rs, FamCol... famCols) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="278" href="#278">278</a>         Map&lt;FamCol, Integer&gt; colCount = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
-<a class="jxr_linenumber" name="279" href="#279">279</a>         Result r = rs.next();
-<a class="jxr_linenumber" name="280" href="#280">280</a>         <strong class="jxr_keyword">while</strong> (r != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="281" href="#281">281</a>             <strong class="jxr_keyword">for</strong> (FamCol col : famCols) {
-<a class="jxr_linenumber" name="282" href="#282">282</a>                 <strong class="jxr_keyword">if</strong> (r.containsColumn(col.fam, col.col)) {
-<a class="jxr_linenumber" name="283" href="#283">283</a>                     Integer c = colCount.get(col);
-<a class="jxr_linenumber" name="284" href="#284">284</a> 
-<a class="jxr_linenumber" name="285" href="#285">285</a>                     <strong class="jxr_keyword">if</strong> (c == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="286" href="#286">286</a>                         colCount.put(col, 1);
-<a class="jxr_linenumber" name="287" href="#287">287</a>                     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="288" href="#288">288</a>                         colCount.put(col, c + 1);
-<a class="jxr_linenumber" name="289" href="#289">289</a>                     }
-<a class="jxr_linenumber" name="290" href="#290">290</a>                 }
-<a class="jxr_linenumber" name="291" href="#291">291</a>             }
-<a class="jxr_linenumber" name="292" href="#292">292</a>             r = rs.next();
-<a class="jxr_linenumber" name="293" href="#293">293</a>         }
-<a class="jxr_linenumber" name="294" href="#294">294</a>         <strong class="jxr_keyword">return</strong> colCount;
-<a class="jxr_linenumber" name="295" href="#295">295</a>     }
-<a class="jxr_linenumber" name="296" href="#296">296</a> 
-<a class="jxr_linenumber" name="297" href="#297">297</a> }
+<a class="jxr_linenumber" name="277" href="#277">277</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="278" href="#278">278</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteColumn(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="279" href="#279">279</a> 
+<a class="jxr_linenumber" name="280" href="#280">280</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="281" href="#281">281</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="282" href="#282">282</a> 
+<a class="jxr_linenumber" name="283" href="#283">283</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="284" href="#284">284</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="285" href="#285">285</a> 
+<a class="jxr_linenumber" name="286" href="#286">286</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
+<a class="jxr_linenumber" name="287" href="#287">287</a> 
+<a class="jxr_linenumber" name="288" href="#288">288</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
+<a class="jxr_linenumber" name="289" href="#289">289</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColB = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colB);
+<a class="jxr_linenumber" name="290" href="#290">290</a>         writeRows(tt, t1, rowsWritten, famColA, famColB);
+<a class="jxr_linenumber" name="291" href="#291">291</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="292" href="#292">292</a> 
+<a class="jxr_linenumber" name="293" href="#293">293</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="294" href="#294">294</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="295" href="#295">295</a>         d.addColumn(famA, colA);
+<a class="jxr_linenumber" name="296" href="#296">296</a>         tt.delete(t2, d);
+<a class="jxr_linenumber" name="297" href="#297">297</a> 
+<a class="jxr_linenumber" name="298" href="#298">298</a>         Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="299" href="#299">299</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="300" href="#300">300</a> 
+<a class="jxr_linenumber" name="301" href="#301">301</a>         Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="302" href="#302">302</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="303" href="#303">303</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="304" href="#304">304</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="305" href="#305">305</a> 
+<a class="jxr_linenumber" name="306" href="#306">306</a>         tscan = tm.begin();
+<a class="jxr_linenumber" name="307" href="#307">307</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="308" href="#308">308</a> 
+<a class="jxr_linenumber" name="309" href="#309">309</a>         count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="310" href="#310">310</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), (rowsWritten - 1), <span class="jxr_string">"ColA count should be equal to rowsWritten - 1"</span>);
+<a class="jxr_linenumber" name="311" href="#311">311</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="312" href="#312">312</a> 
+<a class="jxr_linenumber" name="313" href="#313">313</a>     }
+<a class="jxr_linenumber" name="314" href="#314">314</a> 
+<a class="jxr_linenumber" name="315" href="#315">315</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="316" href="#316">316</a> <em class="jxr_javadoccomment">     * This test is very similar to #runTestDeleteColumn() but exercises Delete#addColumns()</em>
+<a class="jxr_linenumber" name="317" href="#317">317</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="318" href="#318">318</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="319" href="#319">319</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteColumns(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="320" href="#320">320</a> 
+<a class="jxr_linenumber" name="321" href="#321">321</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="322" href="#322">322</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="323" href="#323">323</a> 
+<a class="jxr_linenumber" name="324" href="#324">324</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="325" href="#325">325</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="326" href="#326">326</a> 
+<a class="jxr_linenumber" name="327" href="#327">327</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
+<a class="jxr_linenumber" name="328" href="#328">328</a> 
+<a class="jxr_linenumber" name="329" href="#329">329</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
+<a class="jxr_linenumber" name="330" href="#330">330</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColB = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colB);
+<a class="jxr_linenumber" name="331" href="#331">331</a>         writeRows(tt, t1, rowsWritten, famColA, famColB);
+<a class="jxr_linenumber" name="332" href="#332">332</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="333" href="#333">333</a> 
+<a class="jxr_linenumber" name="334" href="#334">334</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="335" href="#335">335</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="336" href="#336">336</a>         d.addColumns(famA, colA);
+<a class="jxr_linenumber" name="337" href="#337">337</a>         tt.delete(t2, d);
+<a class="jxr_linenumber" name="338" href="#338">338</a> 
+<a class="jxr_linenumber" name="339" href="#339">339</a>         Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="340" href="#340">340</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="341" href="#341">341</a> 
+<a class="jxr_linenumber" name="342" href="#342">342</a>         Map&lt;FamCol, Integer&gt; count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="343" href="#343">343</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), rowsWritten, <span class="jxr_string">"ColA count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="344" href="#344">344</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="345" href="#345">345</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="346" href="#346">346</a> 
+<a class="jxr_linenumber" name="347" href="#347">347</a>         tscan = tm.begin();
+<a class="jxr_linenumber" name="348" href="#348">348</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="349" href="#349">349</a> 
+<a class="jxr_linenumber" name="350" href="#350">350</a>         count = countColsInRows(rs, famColA, famColB);
+<a class="jxr_linenumber" name="351" href="#351">351</a> 
+<a class="jxr_linenumber" name="352" href="#352">352</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColA), (rowsWritten - 1), <span class="jxr_string">"ColA count should be equal to rowsWritten - 1"</span>);
+<a class="jxr_linenumber" name="353" href="#353">353</a>         assertEquals((<strong class="jxr_keyword">int</strong>) count.get(famColB), rowsWritten, <span class="jxr_string">"ColB count should be equal to rowsWritten"</span>);
+<a class="jxr_linenumber" name="354" href="#354">354</a> 
+<a class="jxr_linenumber" name="355" href="#355">355</a>     }
+<a class="jxr_linenumber" name="356" href="#356">356</a> 
+<a class="jxr_linenumber" name="357" href="#357">357</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="358" href="#358">358</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestDeleteRow(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="359" href="#359">359</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="360" href="#360">360</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="361" href="#361">361</a> 
+<a class="jxr_linenumber" name="362" href="#362">362</a>         Transaction t1 = tm.begin();
+<a class="jxr_linenumber" name="363" href="#363">363</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
+<a class="jxr_linenumber" name="364" href="#364">364</a> 
+<a class="jxr_linenumber" name="365" href="#365">365</a>         <strong class="jxr_keyword">int</strong> rowsWritten = 10;
+<a class="jxr_linenumber" name="366" href="#366">366</a> 
+<a class="jxr_linenumber" name="367" href="#367">367</a>         <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a> famColA = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestDeletion.html">FamCol</a>(famA, colA);
+<a class="jxr_linenumber" name="368" href="#368">368</a>         writeRows(tt, t1, rowsWritten, famColA);
+<a class="jxr_linenumber" name="369" href="#369">369</a> 
+<a class="jxr_linenumber" name="370" href="#370">370</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="371" href="#371">371</a> 
+<a class="jxr_linenumber" name="372" href="#372">372</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="373" href="#373">373</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(modrow);
+<a class="jxr_linenumber" name="374" href="#374">374</a>         tt.delete(t2, d);
+<a class="jxr_linenumber" name="375" href="#375">375</a> 
+<a class="jxr_linenumber" name="376" href="#376">376</a>         Transaction tscan = tm.begin();
+<a class="jxr_linenumber" name="377" href="#377">377</a>         ResultScanner rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="378" href="#378">378</a> 
+<a class="jxr_linenumber" name="379" href="#379">379</a>         <strong class="jxr_keyword">int</strong> rowsRead = countRows(rs);
+<a class="jxr_linenumber" name="380" href="#380">380</a>         assertTrue(rowsRead == rowsWritten, <span class="jxr_string">"Expected "</span> + rowsWritten + <span class="jxr_string">" rows but "</span> + rowsRead + <span class="jxr_string">" found"</span>);
+<a class="jxr_linenumber" name="381" href="#381">381</a> 
+<a class="jxr_linenumber" name="382" href="#382">382</a>         tm.commit(t2);
+<a class="jxr_linenumber" name="383" href="#383">383</a> 
+<a class="jxr_linenumber" name="384" href="#384">384</a>         tscan = tm.begin();
+<a class="jxr_linenumber" name="385" href="#385">385</a>         rs = tt.getScanner(tscan, <strong class="jxr_keyword">new</strong> Scan());
+<a class="jxr_linenumber" name="386" href="#386">386</a> 
+<a class="jxr_linenumber" name="387" href="#387">387</a>         rowsRead = countRows(rs);
+<a class="jxr_linenumber" name="388" href="#388">388</a>         assertTrue(rowsRead == (rowsWritten - 1), <span class="jxr_string">"Expected "</span> + (rowsWritten - 1) + <span class="jxr_string">" rows but "</span> + rowsRead + <span class="jxr_string">" found"</span>);
+<a class="jxr_linenumber" name="389" href="#389">389</a> 
+<a class="jxr_linenumber" name="390" href="#390">390</a>     }
+<a class="jxr_linenumber" name="391" href="#391">391</a> 
+<a class="jxr_linenumber" name="392" href="#392">392</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="393" href="#393">393</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDeletionOfNonExistingColumnFamilyDoesNotWriteToHBase(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="394" href="#394">394</a> 
+<a class="jxr_linenumber" name="395" href="#395">395</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="396" href="#396">396</a>         <em class="jxr_comment">// Setup initial environment for the test</em>
+<a class="jxr_linenumber" name="397" href="#397">397</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="398" href="#398">398</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="399" href="#399">399</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="400" href="#400">400</a> 
+<a class="jxr_linenumber" name="401" href="#401">401</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="402" href="#402">402</a>         LOG.info(<span class="jxr_string">"{} writing initial data created "</span>, tx1);
+<a class="jxr_linenumber" name="403" href="#403">403</a>         Put p = <strong class="jxr_keyword">new</strong> Put(Bytes.toBytes(<span class="jxr_string">"row1"</span>));
+<a class="jxr_linenumber" name="404" href="#404">404</a>         p.addColumn(famA, colA, data1);
+<a class="jxr_linenumber" name="405" href="#405">405</a>         txTable.put(tx1, p);
+<a class="jxr_linenumber" name="406" href="#406">406</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="407" href="#407">407</a> 
+<a class="jxr_linenumber" name="408" href="#408">408</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="409" href="#409">409</a>         <em class="jxr_comment">// Try to delete a non existing CF</em>
+<a class="jxr_linenumber" name="410" href="#410">410</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="411" href="#411">411</a>         Transaction deleteTx = tm.begin();
+<a class="jxr_linenumber" name="412" href="#412">412</a>         LOG.info(<span class="jxr_string">"{} trying to delete a non-existing family created "</span>, deleteTx);
+<a class="jxr_linenumber" name="413" href="#413">413</a>         Delete del = <strong class="jxr_keyword">new</strong> Delete(Bytes.toBytes(<span class="jxr_string">"row1"</span>));
+<a class="jxr_linenumber" name="414" href="#414">414</a>         del.addFamily(famB);
+<a class="jxr_linenumber" name="415" href="#415">415</a>         <em class="jxr_comment">// This delete should not put data on HBase</em>
+<a class="jxr_linenumber" name="416" href="#416">416</a>         txTable.delete(deleteTx, del);
+<a class="jxr_linenumber" name="417" href="#417">417</a> 
+<a class="jxr_linenumber" name="418" href="#418">418</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="419" href="#419">419</a>         <em class="jxr_comment">// Check data has not been written to HBase</em>
+<a class="jxr_linenumber" name="420" href="#420">420</a>         <em class="jxr_comment">// --------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="421" href="#421">421</a>         Get get = <strong class="jxr_keyword">new</strong> Get(Bytes.toBytes(<span class="jxr_string">"row1"</span>));
+<a class="jxr_linenumber" name="422" href="#422">422</a>         get.setTimeStamp(deleteTx.getTransactionId());
+<a class="jxr_linenumber" name="423" href="#423">423</a>         Result result = txTable.getHTable().get(get);
+<a class="jxr_linenumber" name="424" href="#424">424</a>         assertTrue(result.isEmpty());
+<a class="jxr_linenumber" name="425" href="#425">425</a> 
+<a class="jxr_linenumber" name="426" href="#426">426</a>     }
+<a class="jxr_linenumber" name="427" href="#427">427</a> 
+<a class="jxr_linenumber" name="428" href="#428">428</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> countRows(ResultScanner rs) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="429" href="#429">429</a>         <strong class="jxr_keyword">int</strong> count;
+<a class="jxr_linenumber" name="430" href="#430">430</a>         Result r = rs.next();
+<a class="jxr_linenumber" name="431" href="#431">431</a>         count = 0;
+<a class="jxr_linenumber" name="432" href="#432">432</a>         <strong class="jxr_keyword">while</strong> (r != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="433" href="#433">433</a>             count++;
+<a class="jxr_linenumber" name="434" href="#434">434</a>             LOG.trace(<span class="jxr_string">"row: "</span> + Bytes.toString(r.getRow()) + <span class="jxr_string">" count: "</span> + count);
+<a class="jxr_linenumber" name="435" href="#435">435</a>             r = rs.next();
+<a class="jxr_linenumber" name="436" href="#436">436</a>         }
+<a class="jxr_linenumber" name="437" href="#437">437</a>         <strong class="jxr_keyword">return</strong> count;
+<a class="jxr_linenumber" name="438" href="#438">438</a>     }
+<a class="jxr_linenumber" name="439" href="#439">439</a> 
+<a class="jxr_linenumber" name="440" href="#440">440</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeRows(TTable tt, Transaction t1, <strong class="jxr_keyword">int</strong> rowcount, FamCol... famCols) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="441" href="#441">441</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; rowcount; i++) {
+<a class="jxr_linenumber" name="442" href="#442">442</a>             byte[] row = Bytes.toBytes(<span class="jxr_string">"test-del"</span> + i);
+<a class="jxr_linenumber" name="443" href="#443">443</a> 
+<a class="jxr_linenumber" name="444" href="#444">444</a>             Put p = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="445" href="#445">445</a>             <strong class="jxr_keyword">for</strong> (FamCol col : famCols) {
+<a class="jxr_linenumber" name="446" href="#446">446</a>                 p.addColumn(col.fam, col.col, data1);
+<a class="jxr_linenumber" name="447" href="#447">447</a>             }
+<a class="jxr_linenumber" name="448" href="#448">448</a>             tt.put(t1, p);
+<a class="jxr_linenumber" name="449" href="#449">449</a>         }
+<a class="jxr_linenumber" name="450" href="#450">450</a>     }
+<a class="jxr_linenumber" name="451" href="#451">451</a> 
+<a class="jxr_linenumber" name="452" href="#452">452</a>     <strong class="jxr_keyword">private</strong> Map&lt;FamCol, Integer&gt; countColsInRows(ResultScanner rs, FamCol... famCols) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="453" href="#453">453</a>         Map&lt;FamCol, Integer&gt; colCount = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
+<a class="jxr_linenumber" name="454" href="#454">454</a>         Result r = rs.next();
+<a class="jxr_linenumber" name="455" href="#455">455</a>         <strong class="jxr_keyword">while</strong> (r != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="456" href="#456">456</a>             <strong class="jxr_keyword">for</strong> (FamCol col : famCols) {
+<a class="jxr_linenumber" name="457" href="#457">457</a>                 <strong class="jxr_keyword">if</strong> (r.containsColumn(col.fam, col.col)) {
+<a class="jxr_linenumber" name="458" href="#458">458</a>                     Integer c = colCount.get(col);
+<a class="jxr_linenumber" name="459" href="#459">459</a> 
+<a class="jxr_linenumber" name="460" href="#460">460</a>                     <strong class="jxr_keyword">if</strong> (c == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="461" href="#461">461</a>                         colCount.put(col, 1);
+<a class="jxr_linenumber" name="462" href="#462">462</a>                     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="463" href="#463">463</a>                         colCount.put(col, c + 1);
+<a class="jxr_linenumber" name="464" href="#464">464</a>                     }
+<a class="jxr_linenumber" name="465" href="#465">465</a>                 }
+<a class="jxr_linenumber" name="466" href="#466">466</a>             }
+<a class="jxr_linenumber" name="467" href="#467">467</a>             r = rs.next();
+<a class="jxr_linenumber" name="468" href="#468">468</a>         }
+<a class="jxr_linenumber" name="469" href="#469">469</a>         <strong class="jxr_keyword">return</strong> colCount;
+<a class="jxr_linenumber" name="470" href="#470">470</a>     }
+<a class="jxr_linenumber" name="471" href="#471">471</a> 
+<a class="jxr_linenumber" name="472" href="#472">472</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[14/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/AbstractTransactionManager.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/AbstractTransactionManager.html b/xref/org/apache/omid/transaction/AbstractTransactionManager.html
index b42bfca..2255128 100644
--- a/xref/org/apache/omid/transaction/AbstractTransactionManager.html
+++ b/xref/org/apache/omid/transaction/AbstractTransactionManager.html
@@ -29,501 +29,434 @@
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Function;
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.Futures;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Counter;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Timer;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction.Status;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.AbortException;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.ConnectionException;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.ServiceUnavailableException;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOProtocol;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.CACHE;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.COMMIT_TABLE;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.NOT_PRESENT;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.SHADOW_CELL;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.metrics.MetricsUtils.name;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * Omid's base abstract implementation of the {@link TransactionManager} interface.</em>
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * Provides extra methods to allow transaction manager developers to perform</em>
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * different actions before/after the methods exposed by the {@link TransactionManager} interface.</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * So, this abstract class must be extended by particular implementations of</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * transaction managers related to different storage systems (HBase...)</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/TransactionManager.html">TransactionManager</a> {
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(AbstractTransactionManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">interface</strong> TransactionFactory&lt;T <strong class="jxr_keyword">extends</strong> CellId&gt; {
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>          AbstractTransaction&lt;T&gt; createTransaction(<strong class="jxr_keyword">long</strong> transactionId, <strong class="jxr_keyword">long</strong> epoch, <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> tm);
-<a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>      }
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter;
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/client/TSOProtocol.html">TSOProtocol</a> tsoClient;
-<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> CommitTable.Client commitTableClient;
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> TransactionFactory&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transactionFactory;
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <em class="jxr_comment">// Metrics</em>
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> startTimestampTimer;
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> commitTimer;
-<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Counter.html">Counter</a> committedTxsCounter;
-<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Counter.html">Counter</a> rolledbackTxsCounter;
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Counter.html">Counter</a> errorTxsCounter;
-<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Counter.html">Counter</a> invalidatedTxsCounter;
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="79" href="#79">79</a>  <em class="jxr_javadoccomment">     * Base constructor</em>
-<a class="jxr_linenumber" name="80" href="#80">80</a>  <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * @param metrics</em>
-<a class="jxr_linenumber" name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     *            instrumentation metrics</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * @param postCommitter</em>
-<a class="jxr_linenumber" name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     *            post commit action executor</em>
-<a class="jxr_linenumber" name="85" href="#85">85</a>  <em class="jxr_javadoccomment">     * @param tsoClient</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>  <em class="jxr_javadoccomment">     *            a client for accessing functionality of the status oracle</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>  <em class="jxr_javadoccomment">     * @param commitTableClient</em>
-<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     *            a client for accessing functionality of the commit table</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     * @param transactionFactory</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     *            a transaction factory to create the specific transaction</em>
-<a class="jxr_linenumber" name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     *            objects required by the transaction manager being implemented.</em>
-<a class="jxr_linenumber" name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a>(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics,
-<a class="jxr_linenumber" name="94" href="#94">94</a>                                        <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter,
-<a class="jxr_linenumber" name="95" href="#95">95</a>                                        <a href="../../../../org/apache/omid/tso/client/TSOProtocol.html">TSOProtocol</a> tsoClient,
-<a class="jxr_linenumber" name="96" href="#96">96</a>                                        CommitTable.Client commitTableClient,
-<a class="jxr_linenumber" name="97" href="#97">97</a>                                        TransactionFactory&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transactionFactory) {
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">this</strong>.tsoClient = tsoClient;
-<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">this</strong>.postCommitter = postCommitter;
-<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">this</strong>.commitTableClient = commitTableClient;
-<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">this</strong>.transactionFactory = transactionFactory;
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>         <em class="jxr_comment">// Metrics configuration</em>
-<a class="jxr_linenumber" name="105" href="#105">105</a>         <strong class="jxr_keyword">this</strong>.startTimestampTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"startTimestamp"</span>, <span class="jxr_string">"latency"</span>));
-<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">this</strong>.commitTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"commit"</span>, <span class="jxr_string">"latency"</span>));
-<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">this</strong>.committedTxsCounter = metrics.counter(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"committedTxs"</span>));
-<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">this</strong>.rolledbackTxsCounter = metrics.counter(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"rolledbackTxs"</span>));
-<a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">this</strong>.errorTxsCounter = metrics.counter(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"erroredTxs"</span>));
-<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">this</strong>.invalidatedTxsCounter = metrics.counter(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"invalidatedTxs"</span>));
-<a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>     }
-<a class="jxr_linenumber" name="113" href="#113">113</a> 
-<a class="jxr_linenumber" name="114" href="#114">114</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="115" href="#115">115</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions before creating a transaction.</em>
-<a class="jxr_linenumber" name="116" href="#116">116</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException in case of any issues</em>
-<a class="jxr_linenumber" name="117" href="#117">117</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preBegin() <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.TransactionManager#begin()</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="123" href="#123">123</a>     @Override
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> begin() <strong class="jxr_keyword">throws</strong> TransactionException {
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="127" href="#127">127</a>             preBegin();
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.hash.Hashing;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.Futures;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Counter;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Timer;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction.Status;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.AbortException;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.ConnectionException;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.ServiceUnavailableException;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.metrics.MetricsUtils.name;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * Omid's base abstract implementation of the {@link TransactionManager} interface.</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * Provides extra methods to allow transaction manager developers to perform</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * different actions before/after the methods exposed by the {@link TransactionManager} interface.</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * So, this abstract class must be extended by particular implementations of</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * transaction managers related to different storage systems (HBase...)</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/TransactionManager.html">TransactionManager</a> {
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(AbstractTransactionManager.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> MAX_CHECKPOINTS_PER_TXN = 50;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">interface</strong> TransactionFactory&lt;T <strong class="jxr_keyword">extends</strong> CellId&gt; {
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>          AbstractTransaction&lt;T&gt; createTransaction(<strong class="jxr_keyword">long</strong> transactionId, <strong class="jxr_keyword">long</strong> epoch, <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> tm);
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>      }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter;
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/client/TSOClient.html">TSOClient</a> tsoClient;
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> CommitTable.Client commitTableClient;
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> TransactionFactory&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transactionFactory;
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>      <em class="jxr_comment">// Metrics</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> startTimestampTimer;
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> commitTimer;
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> fenceTimer;
+<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Counter.html">Counter</a> committedTxsCounter;
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Counter.html">Counter</a> rolledbackTxsCounter;
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Counter.html">Counter</a> errorTxsCounter;
+<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Counter.html">Counter</a> invalidatedTxsCounter;
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * Base constructor</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>  <em class="jxr_javadoccomment">     * @param metrics</em>
+<a class="jxr_linenumber" name="84" href="#84">84</a>  <em class="jxr_javadoccomment">     *            instrumentation metrics</em>
+<a class="jxr_linenumber" name="85" href="#85">85</a>  <em class="jxr_javadoccomment">     * @param postCommitter</em>
+<a class="jxr_linenumber" name="86" href="#86">86</a>  <em class="jxr_javadoccomment">     *            post commit action executor</em>
+<a class="jxr_linenumber" name="87" href="#87">87</a>  <em class="jxr_javadoccomment">     * @param tsoClient</em>
+<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     *            a client for accessing functionality of the status oracle</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     * @param commitTableClient</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     *            a client for accessing functionality of the commit table</em>
+<a class="jxr_linenumber" name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     * @param transactionFactory</em>
+<a class="jxr_linenumber" name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     *            a transaction factory to create the specific transaction</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     *            objects required by the transaction manager being implemented.</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="95" href="#95">95</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a>(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics,
+<a class="jxr_linenumber" name="96" href="#96">96</a>                                        <a href="../../../../org/apache/omid/transaction/PostCommitActions.html">PostCommitActions</a> postCommitter,
+<a class="jxr_linenumber" name="97" href="#97">97</a>                                        <a href="../../../../org/apache/omid/tso/client/TSOClient.html">TSOClient</a> tsoClient,
+<a class="jxr_linenumber" name="98" href="#98">98</a>                                        CommitTable.Client commitTableClient,
+<a class="jxr_linenumber" name="99" href="#99">99</a>                                        TransactionFactory&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transactionFactory) {
+<a class="jxr_linenumber" name="100" href="#100">100</a> 
+<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">this</strong>.tsoClient = tsoClient;
+<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">this</strong>.postCommitter = postCommitter;
+<a class="jxr_linenumber" name="103" href="#103">103</a>         <strong class="jxr_keyword">this</strong>.commitTableClient = commitTableClient;
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">this</strong>.transactionFactory = transactionFactory;
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         <em class="jxr_comment">// Metrics configuration</em>
+<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">this</strong>.startTimestampTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"startTimestamp"</span>, <span class="jxr_string">"latency"</span>));
+<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">this</strong>.commitTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"commit"</span>, <span class="jxr_string">"latency"</span>));
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">this</strong>.fenceTimer = metrics.timer(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"fence"</span>, <span class="jxr_string">"latency"</span>));
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">this</strong>.committedTxsCounter = metrics.counter(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"committedTxs"</span>));
+<a class="jxr_linenumber" name="111" href="#111">111</a>         <strong class="jxr_keyword">this</strong>.rolledbackTxsCounter = metrics.counter(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"rolledbackTxs"</span>));
+<a class="jxr_linenumber" name="112" href="#112">112</a>         <strong class="jxr_keyword">this</strong>.errorTxsCounter = metrics.counter(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"erroredTxs"</span>));
+<a class="jxr_linenumber" name="113" href="#113">113</a>         <strong class="jxr_keyword">this</strong>.invalidatedTxsCounter = metrics.counter(name(<span class="jxr_string">"omid"</span>, <span class="jxr_string">"tm"</span>, <span class="jxr_string">"hbase"</span>, <span class="jxr_string">"invalidatedTxs"</span>));
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>     }
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="118" href="#118">118</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions before creating a transaction.</em>
+<a class="jxr_linenumber" name="119" href="#119">119</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException in case of any issues</em>
+<a class="jxr_linenumber" name="120" href="#120">120</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preBegin() <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="124" href="#124">124</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.TransactionManager#begin()</em>
+<a class="jxr_linenumber" name="125" href="#125">125</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="126" href="#126">126</a>     @Override
+<a class="jxr_linenumber" name="127" href="#127">127</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> begin() <strong class="jxr_keyword">throws</strong> TransactionException {
 <a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>             <strong class="jxr_keyword">long</strong> startTimestamp, epoch;
-<a class="jxr_linenumber" name="130" href="#130">130</a> 
-<a class="jxr_linenumber" name="131" href="#131">131</a>             <em class="jxr_comment">// The loop is required for HA scenarios where we get the timestamp</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a>             <em class="jxr_comment">// but when getting the epoch, the client is connected to a new TSOServer</em>
-<a class="jxr_linenumber" name="133" href="#133">133</a>             <em class="jxr_comment">// When this happen, the epoch will be larger than the startTimestamp,</em>
-<a class="jxr_linenumber" name="134" href="#134">134</a>             <em class="jxr_comment">// so we need to start the transaction again. We use the fact that epoch</em>
-<a class="jxr_linenumber" name="135" href="#135">135</a>             <em class="jxr_comment">// is always smaller or equal to a timestamp, and therefore, we first need</em>
-<a class="jxr_linenumber" name="136" href="#136">136</a>             <em class="jxr_comment">// to get the timestamp and then the epoch.</em>
-<a class="jxr_linenumber" name="137" href="#137">137</a>             startTimestampTimer.start();
-<a class="jxr_linenumber" name="138" href="#138">138</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="139" href="#139">139</a>                 <strong class="jxr_keyword">do</strong> {
-<a class="jxr_linenumber" name="140" href="#140">140</a>                     startTimestamp = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="141" href="#141">141</a>                     epoch = tsoClient.getEpoch();
-<a class="jxr_linenumber" name="142" href="#142">142</a>                 } <strong class="jxr_keyword">while</strong> (epoch &gt; startTimestamp);
-<a class="jxr_linenumber" name="143" href="#143">143</a>             } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="144" href="#144">144</a>                 startTimestampTimer.stop();
-<a class="jxr_linenumber" name="145" href="#145">145</a>             }
-<a class="jxr_linenumber" name="146" href="#146">146</a> 
-<a class="jxr_linenumber" name="147" href="#147">147</a>             AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx = transactionFactory.createTransaction(startTimestamp, epoch, <strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>             postBegin(tx);
-<a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>             <strong class="jxr_keyword">return</strong> tx;
-<a class="jxr_linenumber" name="152" href="#152">152</a>         } <strong class="jxr_keyword">catch</strong> (TransactionManagerException e) {
-<a class="jxr_linenumber" name="153" href="#153">153</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"An error has occured during PreBegin/PostBegin"</span>, e);
-<a class="jxr_linenumber" name="154" href="#154">154</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
-<a class="jxr_linenumber" name="155" href="#155">155</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Could not get new timestamp"</span>, e);
-<a class="jxr_linenumber" name="156" href="#156">156</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
-<a class="jxr_linenumber" name="157" href="#157">157</a>             Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="158" href="#158">158</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Interrupted getting timestamp"</span>, ie);
-<a class="jxr_linenumber" name="159" href="#159">159</a>         }
-<a class="jxr_linenumber" name="160" href="#160">160</a>     }
-<a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="163" href="#163">163</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions after having started a transaction.</em>
-<a class="jxr_linenumber" name="164" href="#164">164</a> <em class="jxr_javadoccomment">     * @param transaction</em>
-<a class="jxr_linenumber" name="165" href="#165">165</a> <em class="jxr_javadoccomment">     *            the transaction that was just created.</em>
-<a class="jxr_linenumber" name="166" href="#166">166</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException  in case of any issues</em>
-<a class="jxr_linenumber" name="167" href="#167">167</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="168" href="#168">168</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> postBegin(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
-<a class="jxr_linenumber" name="169" href="#169">169</a> 
-<a class="jxr_linenumber" name="170" href="#170">170</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions before committing a transaction.</em>
-<a class="jxr_linenumber" name="172" href="#172">172</a> <em class="jxr_javadoccomment">     * @param transaction</em>
-<a class="jxr_linenumber" name="173" href="#173">173</a> <em class="jxr_javadoccomment">     *            the transaction that is going to be committed.</em>
-<a class="jxr_linenumber" name="174" href="#174">174</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException  in case of any issues</em>
+<a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="130" href="#130">130</a>             preBegin();
+<a class="jxr_linenumber" name="131" href="#131">131</a> 
+<a class="jxr_linenumber" name="132" href="#132">132</a>             <strong class="jxr_keyword">long</strong> startTimestamp, epoch;
+<a class="jxr_linenumber" name="133" href="#133">133</a> 
+<a class="jxr_linenumber" name="134" href="#134">134</a>             <em class="jxr_comment">// The loop is required for HA scenarios where we get the timestamp</em>
+<a class="jxr_linenumber" name="135" href="#135">135</a>             <em class="jxr_comment">// but when getting the epoch, the client is connected to a new TSOServer</em>
+<a class="jxr_linenumber" name="136" href="#136">136</a>             <em class="jxr_comment">// When this happen, the epoch will be larger than the startTimestamp,</em>
+<a class="jxr_linenumber" name="137" href="#137">137</a>             <em class="jxr_comment">// so we need to start the transaction again. We use the fact that epoch</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a>             <em class="jxr_comment">// is always smaller or equal to a timestamp, and therefore, we first need</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a>             <em class="jxr_comment">// to get the timestamp and then the epoch.</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a>             startTimestampTimer.start();
+<a class="jxr_linenumber" name="141" href="#141">141</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="142" href="#142">142</a>                 <strong class="jxr_keyword">do</strong> {
+<a class="jxr_linenumber" name="143" href="#143">143</a>                     startTimestamp = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="144" href="#144">144</a>                     epoch = tsoClient.getEpoch();
+<a class="jxr_linenumber" name="145" href="#145">145</a>                 } <strong class="jxr_keyword">while</strong> (epoch &gt; startTimestamp);
+<a class="jxr_linenumber" name="146" href="#146">146</a>             } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="147" href="#147">147</a>                 startTimestampTimer.stop();
+<a class="jxr_linenumber" name="148" href="#148">148</a>             }
+<a class="jxr_linenumber" name="149" href="#149">149</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>             AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx = transactionFactory.createTransaction(startTimestamp, epoch, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>             postBegin(tx);
+<a class="jxr_linenumber" name="153" href="#153">153</a> 
+<a class="jxr_linenumber" name="154" href="#154">154</a>             <strong class="jxr_keyword">return</strong> tx;
+<a class="jxr_linenumber" name="155" href="#155">155</a>         } <strong class="jxr_keyword">catch</strong> (TransactionManagerException e) {
+<a class="jxr_linenumber" name="156" href="#156">156</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"An error has occured during PreBegin/PostBegin"</span>, e);
+<a class="jxr_linenumber" name="157" href="#157">157</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="158" href="#158">158</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Could not get new timestamp"</span>, e);
+<a class="jxr_linenumber" name="159" href="#159">159</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
+<a class="jxr_linenumber" name="160" href="#160">160</a>             Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="161" href="#161">161</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Interrupted getting timestamp"</span>, ie);
+<a class="jxr_linenumber" name="162" href="#162">162</a>         }
+<a class="jxr_linenumber" name="163" href="#163">163</a>     }
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a> <em class="jxr_javadoccomment">     * Generates hash ID for table name, this hash is later-on sent to the TSO and used for fencing</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a> <em class="jxr_javadoccomment">     * @param tableName - the table name</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a> <em class="jxr_javadoccomment">     * @return</em>
+<a class="jxr_linenumber" name="169" href="#169">169</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getHashForTable(byte[] tableName);
+<a class="jxr_linenumber" name="171" href="#171">171</a> 
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="173" href="#173">173</a> <em class="jxr_javadoccomment">     * Return the commit table client</em>
+<a class="jxr_linenumber" name="174" href="#174">174</a> <em class="jxr_javadoccomment">     * @return commitTableClient</em>
 <a class="jxr_linenumber" name="175" href="#175">175</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preCommit(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="179" href="#179">179</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.TransactionManager#commit(Transaction)</em>
-<a class="jxr_linenumber" name="180" href="#180">180</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a>     @Override
-<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> commit(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> transaction) <strong class="jxr_keyword">throws</strong> RollbackException, TransactionException {
-<a class="jxr_linenumber" name="183" href="#183">183</a> 
-<a class="jxr_linenumber" name="184" href="#184">184</a>         AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx = enforceAbstractTransactionAsParam(transaction);
-<a class="jxr_linenumber" name="185" href="#185">185</a>         enforceTransactionIsInRunningState(tx);
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>         <strong class="jxr_keyword">if</strong> (tx.isRollbackOnly()) { <em class="jxr_comment">// Manage explicit user rollback</em>
-<a class="jxr_linenumber" name="188" href="#188">188</a>             rollback(tx);
-<a class="jxr_linenumber" name="189" href="#189">189</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/RollbackException.html">RollbackException</a>(tx + <span class="jxr_string">": Tx was set to rollback explicitly"</span>);
-<a class="jxr_linenumber" name="190" href="#190">190</a>         }
-<a class="jxr_linenumber" name="191" href="#191">191</a> 
-<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="193" href="#193">193</a> 
-<a class="jxr_linenumber" name="194" href="#194">194</a>             preCommit(tx);
+<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> CommitTable.Client getCommitTableClient() {
+<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">return</strong> commitTableClient;
+<a class="jxr_linenumber" name="178" href="#178">178</a>     }
+<a class="jxr_linenumber" name="179" href="#179">179</a> 
+<a class="jxr_linenumber" name="180" href="#180">180</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="181" href="#181">181</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.TransactionManager#fence()</em>
+<a class="jxr_linenumber" name="182" href="#182">182</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a>     @Override
+<a class="jxr_linenumber" name="184" href="#184">184</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> fence(byte[] tableName) <strong class="jxr_keyword">throws</strong> TransactionException {
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">long</strong> fenceTimestamp;
+<a class="jxr_linenumber" name="186" href="#186">186</a>         <strong class="jxr_keyword">long</strong> tableID = getHashForTable(tableName); Hashing.murmur3_128().newHasher().putBytes(tableName).hash().asLong();
+<a class="jxr_linenumber" name="187" href="#187">187</a> 
+<a class="jxr_linenumber" name="188" href="#188">188</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="189" href="#189">189</a>             fenceTimer.start();
+<a class="jxr_linenumber" name="190" href="#190">190</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="191" href="#191">191</a>                 fenceTimestamp = tsoClient.getFence(tableID).get();
+<a class="jxr_linenumber" name="192" href="#192">192</a>             } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="193" href="#193">193</a>                 fenceTimer.stop();
+<a class="jxr_linenumber" name="194" href="#194">194</a>             }
 <a class="jxr_linenumber" name="195" href="#195">195</a> 
-<a class="jxr_linenumber" name="196" href="#196">196</a>             commitTimer.start();
-<a class="jxr_linenumber" name="197" href="#197">197</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="198" href="#198">198</a>                 <strong class="jxr_keyword">if</strong> (tx.getWriteSet().isEmpty()) {
-<a class="jxr_linenumber" name="199" href="#199">199</a>                     markReadOnlyTransaction(tx); <em class="jxr_comment">// No need for read-only transactions to contact the TSO Server</em>
-<a class="jxr_linenumber" name="200" href="#200">200</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="201" href="#201">201</a>                     commitRegularTransaction(tx);
-<a class="jxr_linenumber" name="202" href="#202">202</a>                 }
-<a class="jxr_linenumber" name="203" href="#203">203</a>                 committedTxsCounter.inc();
-<a class="jxr_linenumber" name="204" href="#204">204</a>             } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="205" href="#205">205</a>                 commitTimer.stop();
-<a class="jxr_linenumber" name="206" href="#206">206</a>             }
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>             postCommit(tx);
-<a class="jxr_linenumber" name="209" href="#209">209</a> 
-<a class="jxr_linenumber" name="210" href="#210">210</a>         } <strong class="jxr_keyword">catch</strong> (TransactionManagerException e) {
-<a class="jxr_linenumber" name="211" href="#211">211</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(e.getMessage(), e);
-<a class="jxr_linenumber" name="212" href="#212">212</a>         }
-<a class="jxr_linenumber" name="213" href="#213">213</a> 
-<a class="jxr_linenumber" name="214" href="#214">214</a>     }
-<a class="jxr_linenumber" name="215" href="#215">215</a> 
-<a class="jxr_linenumber" name="216" href="#216">216</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="217" href="#217">217</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions after committing a transaction.</em>
-<a class="jxr_linenumber" name="218" href="#218">218</a> <em class="jxr_javadoccomment">     * @param transaction</em>
-<a class="jxr_linenumber" name="219" href="#219">219</a> <em class="jxr_javadoccomment">     *            the transaction that was committed.</em>
-<a class="jxr_linenumber" name="220" href="#220">220</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException in case of any issues</em>
-<a class="jxr_linenumber" name="221" href="#221">221</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="222" href="#222">222</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> postCommit(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
-<a class="jxr_linenumber" name="223" href="#223">223</a> 
-<a class="jxr_linenumber" name="224" href="#224">224</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="225" href="#225">225</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions before rolling-back a transaction.</em>
-<a class="jxr_linenumber" name="226" href="#226">226</a> <em class="jxr_javadoccomment">     * @param transaction the transaction that is going to be rolled-back.</em>
-<a class="jxr_linenumber" name="227" href="#227">227</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException in case of any issues</em>
-<a class="jxr_linenumber" name="228" href="#228">228</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="229" href="#229">229</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preRollback(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
-<a class="jxr_linenumber" name="230" href="#230">230</a> 
-<a class="jxr_linenumber" name="231" href="#231">231</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="232" href="#232">232</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.TransactionManager#rollback(Transaction)</em>
-<a class="jxr_linenumber" name="233" href="#233">233</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>     @Override
-<a class="jxr_linenumber" name="235" href="#235">235</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> rollback(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> transaction) <strong class="jxr_keyword">throws</strong> TransactionException {
+<a class="jxr_linenumber" name="196" href="#196">196</a>             AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx = transactionFactory.createTransaction(fenceTimestamp, fenceTimestamp, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="197" href="#197">197</a> 
+<a class="jxr_linenumber" name="198" href="#198">198</a>             <strong class="jxr_keyword">return</strong> tx;
+<a class="jxr_linenumber" name="199" href="#199">199</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="200" href="#200">200</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Could not get fence"</span>, e);
+<a class="jxr_linenumber" name="201" href="#201">201</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
+<a class="jxr_linenumber" name="202" href="#202">202</a>             Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="203" href="#203">203</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Interrupted creating a fence"</span>, ie);
+<a class="jxr_linenumber" name="204" href="#204">204</a>         }
+<a class="jxr_linenumber" name="205" href="#205">205</a>     }
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="208" href="#208">208</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions after having started a transaction.</em>
+<a class="jxr_linenumber" name="209" href="#209">209</a> <em class="jxr_javadoccomment">     * @param transaction</em>
+<a class="jxr_linenumber" name="210" href="#210">210</a> <em class="jxr_javadoccomment">     *            the transaction that was just created.</em>
+<a class="jxr_linenumber" name="211" href="#211">211</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException  in case of any issues</em>
+<a class="jxr_linenumber" name="212" href="#212">212</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="213" href="#213">213</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> postBegin(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
+<a class="jxr_linenumber" name="214" href="#214">214</a> 
+<a class="jxr_linenumber" name="215" href="#215">215</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="216" href="#216">216</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions before committing a transaction.</em>
+<a class="jxr_linenumber" name="217" href="#217">217</a> <em class="jxr_javadoccomment">     * @param transaction</em>
+<a class="jxr_linenumber" name="218" href="#218">218</a> <em class="jxr_javadoccomment">     *            the transaction that is going to be committed.</em>
+<a class="jxr_linenumber" name="219" href="#219">219</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException  in case of any issues</em>
+<a class="jxr_linenumber" name="220" href="#220">220</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="221" href="#221">221</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preCommit(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
+<a class="jxr_linenumber" name="222" href="#222">222</a> 
+<a class="jxr_linenumber" name="223" href="#223">223</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="224" href="#224">224</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.TransactionManager#commit(Transaction)</em>
+<a class="jxr_linenumber" name="225" href="#225">225</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="226" href="#226">226</a>     @Override
+<a class="jxr_linenumber" name="227" href="#227">227</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> commit(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> transaction) <strong class="jxr_keyword">throws</strong> RollbackException, TransactionException {
+<a class="jxr_linenumber" name="228" href="#228">228</a> 
+<a class="jxr_linenumber" name="229" href="#229">229</a>         AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx = enforceAbstractTransactionAsParam(transaction);
+<a class="jxr_linenumber" name="230" href="#230">230</a>         enforceTransactionIsInRunningState(tx);
+<a class="jxr_linenumber" name="231" href="#231">231</a> 
+<a class="jxr_linenumber" name="232" href="#232">232</a>         <strong class="jxr_keyword">if</strong> (tx.isRollbackOnly()) { <em class="jxr_comment">// Manage explicit user rollback</em>
+<a class="jxr_linenumber" name="233" href="#233">233</a>             rollback(tx);
+<a class="jxr_linenumber" name="234" href="#234">234</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/RollbackException.html">RollbackException</a>(tx + <span class="jxr_string">": Tx was set to rollback explicitly"</span>);
+<a class="jxr_linenumber" name="235" href="#235">235</a>         }
 <a class="jxr_linenumber" name="236" href="#236">236</a> 
-<a class="jxr_linenumber" name="237" href="#237">237</a>         AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx = enforceAbstractTransactionAsParam(transaction);
-<a class="jxr_linenumber" name="238" href="#238">238</a>         enforceTransactionIsInRunningState(tx);
-<a class="jxr_linenumber" name="239" href="#239">239</a> 
-<a class="jxr_linenumber" name="240" href="#240">240</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="241" href="#241">241</a> 
-<a class="jxr_linenumber" name="242" href="#242">242</a>             preRollback(tx);
-<a class="jxr_linenumber" name="243" href="#243">243</a> 
-<a class="jxr_linenumber" name="244" href="#244">244</a>             <em class="jxr_comment">// Make sure its commit timestamp is 0, so the cleanup does the right job</em>
-<a class="jxr_linenumber" name="245" href="#245">245</a>             tx.setCommitTimestamp(0);
-<a class="jxr_linenumber" name="246" href="#246">246</a>             tx.setStatus(Status.ROLLEDBACK);
-<a class="jxr_linenumber" name="247" href="#247">247</a> 
-<a class="jxr_linenumber" name="248" href="#248">248</a>             postRollback(tx);
-<a class="jxr_linenumber" name="249" href="#249">249</a> 
-<a class="jxr_linenumber" name="250" href="#250">250</a>         } <strong class="jxr_keyword">catch</strong> (TransactionManagerException e) {
-<a class="jxr_linenumber" name="251" href="#251">251</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(e.getMessage(), e);
-<a class="jxr_linenumber" name="252" href="#252">252</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="253" href="#253">253</a>             tx.cleanup();
-<a class="jxr_linenumber" name="254" href="#254">254</a>         }
-<a class="jxr_linenumber" name="255" href="#255">255</a> 
-<a class="jxr_linenumber" name="256" href="#256">256</a>     }
-<a class="jxr_linenumber" name="257" href="#257">257</a> 
-<a class="jxr_linenumber" name="258" href="#258">258</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="259" href="#259">259</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions after rolling-back a transaction.</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a> <em class="jxr_javadoccomment">     * @param transaction</em>
-<a class="jxr_linenumber" name="261" href="#261">261</a> <em class="jxr_javadoccomment">     *            the transaction that was rolled-back.</em>
-<a class="jxr_linenumber" name="262" href="#262">262</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException in case of any issues</em>
-<a class="jxr_linenumber" name="263" href="#263">263</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="264" href="#264">264</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> postRollback(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
-<a class="jxr_linenumber" name="265" href="#265">265</a> 
-<a class="jxr_linenumber" name="266" href="#266">266</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="267" href="#267">267</a> <em class="jxr_javadoccomment">     * Check if the transaction commit data is in the shadow cell</em>
-<a class="jxr_linenumber" name="268" href="#268">268</a> <em class="jxr_javadoccomment">     * @param cellStartTimestamp</em>
-<a class="jxr_linenumber" name="269" href="#269">269</a> <em class="jxr_javadoccomment">     *            the transaction start timestamp</em>
-<a class="jxr_linenumber" name="270" href="#270">270</a> <em class="jxr_javadoccomment">     *        locator</em>
-<a class="jxr_linenumber" name="271" href="#271">271</a> <em class="jxr_javadoccomment">     *            the timestamp locator</em>
-<a class="jxr_linenumber" name="272" href="#272">272</a> <em class="jxr_javadoccomment">     * @throws IOException</em>
+<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="238" href="#238">238</a> 
+<a class="jxr_linenumber" name="239" href="#239">239</a>             preCommit(tx);
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>             commitTimer.start();
+<a class="jxr_linenumber" name="242" href="#242">242</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="243" href="#243">243</a>                 <strong class="jxr_keyword">if</strong> (tx.getWriteSet().isEmpty() &amp;&amp; tx.getConflictFreeWriteSet().isEmpty()) {
+<a class="jxr_linenumber" name="244" href="#244">244</a>                     markReadOnlyTransaction(tx); <em class="jxr_comment">// No need for read-only transactions to contact the TSO Server</em>
+<a class="jxr_linenumber" name="245" href="#245">245</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="246" href="#246">246</a>                     commitRegularTransaction(tx);
+<a class="jxr_linenumber" name="247" href="#247">247</a>                 }
+<a class="jxr_linenumber" name="248" href="#248">248</a>                 committedTxsCounter.inc();
+<a class="jxr_linenumber" name="249" href="#249">249</a>             } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="250" href="#250">250</a>                 commitTimer.stop();
+<a class="jxr_linenumber" name="251" href="#251">251</a>             }
+<a class="jxr_linenumber" name="252" href="#252">252</a> 
+<a class="jxr_linenumber" name="253" href="#253">253</a>             postCommit(tx);
+<a class="jxr_linenumber" name="254" href="#254">254</a> 
+<a class="jxr_linenumber" name="255" href="#255">255</a>         } <strong class="jxr_keyword">catch</strong> (TransactionManagerException e) {
+<a class="jxr_linenumber" name="256" href="#256">256</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(e.getMessage(), e);
+<a class="jxr_linenumber" name="257" href="#257">257</a>         }
+<a class="jxr_linenumber" name="258" href="#258">258</a> 
+<a class="jxr_linenumber" name="259" href="#259">259</a>     }
+<a class="jxr_linenumber" name="260" href="#260">260</a> 
+<a class="jxr_linenumber" name="261" href="#261">261</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="262" href="#262">262</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions after committing a transaction.</em>
+<a class="jxr_linenumber" name="263" href="#263">263</a> <em class="jxr_javadoccomment">     * @param transaction</em>
+<a class="jxr_linenumber" name="264" href="#264">264</a> <em class="jxr_javadoccomment">     *            the transaction that was committed.</em>
+<a class="jxr_linenumber" name="265" href="#265">265</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException in case of any issues</em>
+<a class="jxr_linenumber" name="266" href="#266">266</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="267" href="#267">267</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> postCommit(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
+<a class="jxr_linenumber" name="268" href="#268">268</a> 
+<a class="jxr_linenumber" name="269" href="#269">269</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="270" href="#270">270</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions before rolling-back a transaction.</em>
+<a class="jxr_linenumber" name="271" href="#271">271</a> <em class="jxr_javadoccomment">     * @param transaction the transaction that is going to be rolled-back.</em>
+<a class="jxr_linenumber" name="272" href="#272">272</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException in case of any issues</em>
 <a class="jxr_linenumber" name="273" href="#273">273</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="274" href="#274">274</a>     Optional&lt;CommitTimestamp&gt; readCommitTimestampFromShadowCell(<strong class="jxr_keyword">long</strong> cellStartTimestamp, <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> locator)
-<a class="jxr_linenumber" name="275" href="#275">275</a>             <strong class="jxr_keyword">throws</strong> IOException
-<a class="jxr_linenumber" name="276" href="#276">276</a>     {
-<a class="jxr_linenumber" name="277" href="#277">277</a> 
-<a class="jxr_linenumber" name="278" href="#278">278</a>         Optional&lt;CommitTimestamp&gt; commitTS = Optional.absent();
-<a class="jxr_linenumber" name="279" href="#279">279</a> 
-<a class="jxr_linenumber" name="280" href="#280">280</a>         Optional&lt;Long&gt; commitTimestamp = locator.readCommitTimestampFromShadowCell(cellStartTimestamp);
-<a class="jxr_linenumber" name="281" href="#281">281</a>         <strong class="jxr_keyword">if</strong> (commitTimestamp.isPresent()) {
-<a class="jxr_linenumber" name="282" href="#282">282</a>             commitTS = Optional.of(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(SHADOW_CELL, commitTimestamp.get(), <strong class="jxr_keyword">true</strong>)); <em class="jxr_comment">// Valid commit TS</em>
-<a class="jxr_linenumber" name="283" href="#283">283</a>         }
+<a class="jxr_linenumber" name="274" href="#274">274</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preRollback(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
+<a class="jxr_linenumber" name="275" href="#275">275</a> 
+<a class="jxr_linenumber" name="276" href="#276">276</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="277" href="#277">277</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.TransactionManager#rollback(Transaction)</em>
+<a class="jxr_linenumber" name="278" href="#278">278</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="279" href="#279">279</a>     @Override
+<a class="jxr_linenumber" name="280" href="#280">280</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> rollback(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> transaction) <strong class="jxr_keyword">throws</strong> TransactionException {
+<a class="jxr_linenumber" name="281" href="#281">281</a> 
+<a class="jxr_linenumber" name="282" href="#282">282</a>         AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; tx = enforceAbstractTransactionAsParam(transaction);
+<a class="jxr_linenumber" name="283" href="#283">283</a>         enforceTransactionIsInRunningState(tx);
 <a class="jxr_linenumber" name="284" href="#284">284</a> 
-<a class="jxr_linenumber" name="285" href="#285">285</a>         <strong class="jxr_keyword">return</strong> commitTS;
-<a class="jxr_linenumber" name="286" href="#286">286</a>     }
-<a class="jxr_linenumber" name="287" href="#287">287</a> 
-<a class="jxr_linenumber" name="288" href="#288">288</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="289" href="#289">289</a> <em class="jxr_javadoccomment">     * This function returns the commit timestamp for a particular cell if the transaction was already committed in</em>
-<a class="jxr_linenumber" name="290" href="#290">290</a> <em class="jxr_javadoccomment">     * the system. In case the transaction was not committed and the cell was written by transaction initialized by a</em>
-<a class="jxr_linenumber" name="291" href="#291">291</a> <em class="jxr_javadoccomment">     * previous TSO server, an invalidation try occurs.</em>
-<a class="jxr_linenumber" name="292" href="#292">292</a> <em class="jxr_javadoccomment">     * Otherwise the function returns a value that indicates that the commit timestamp was not found.</em>
-<a class="jxr_linenumber" name="293" href="#293">293</a> <em class="jxr_javadoccomment">     * @param cellStartTimestamp</em>
-<a class="jxr_linenumber" name="294" href="#294">294</a> <em class="jxr_javadoccomment">     *          start timestamp of the cell to locate the commit timestamp for.</em>
-<a class="jxr_linenumber" name="295" href="#295">295</a> <em class="jxr_javadoccomment">     * @param epoch</em>
-<a class="jxr_linenumber" name="296" href="#296">296</a> <em class="jxr_javadoccomment">     *          the epoch of the TSO server the current tso client is working with.</em>
-<a class="jxr_linenumber" name="297" href="#297">297</a> <em class="jxr_javadoccomment">     * @param locator</em>
-<a class="jxr_linenumber" name="298" href="#298">298</a> <em class="jxr_javadoccomment">     *          a locator to find the commit timestamp in the system.</em>
-<a class="jxr_linenumber" name="299" href="#299">299</a> <em class="jxr_javadoccomment">     * @return the commit timestamp joint with the location where it was found</em>
-<a class="jxr_linenumber" name="300" href="#300">300</a> <em class="jxr_javadoccomment">     *         or an object indicating that it was not found in the system</em>
-<a class="jxr_linenumber" name="301" href="#301">301</a> <em class="jxr_javadoccomment">     * @throws IOException  in case of any I/O issues</em>
-<a class="jxr_linenumber" name="302" href="#302">302</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="303" href="#303">303</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> locateCellCommitTimestamp(<strong class="jxr_keyword">long</strong> cellStartTimestamp, <strong class="jxr_keyword">long</strong> epoch,
-<a class="jxr_linenumber" name="304" href="#304">304</a>                                                      <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> locator) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="305" href="#305">305</a> 
-<a class="jxr_linenumber" name="306" href="#306">306</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="307" href="#307">307</a>             <em class="jxr_comment">// 1) First check the cache</em>
-<a class="jxr_linenumber" name="308" href="#308">308</a>             Optional&lt;Long&gt; commitTimestamp = locator.readCommitTimestampFromCache(cellStartTimestamp);
-<a class="jxr_linenumber" name="309" href="#309">309</a>             <strong class="jxr_keyword">if</strong> (commitTimestamp.isPresent()) { <em class="jxr_comment">// Valid commit timestamp</em>
-<a class="jxr_linenumber" name="310" href="#310">310</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(CACHE, commitTimestamp.get(), <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="311" href="#311">311</a>             }
-<a class="jxr_linenumber" name="312" href="#312">312</a> 
-<a class="jxr_linenumber" name="313" href="#313">313</a>             <em class="jxr_comment">// 2) Then check the commit table</em>
-<a class="jxr_linenumber" name="314" href="#314">314</a>             <em class="jxr_comment">// If the data was written at a previous epoch, check whether the transaction was invalidated</em>
-<a class="jxr_linenumber" name="315" href="#315">315</a>             Optional&lt;CommitTimestamp&gt; commitTimeStamp = commitTableClient.getCommitTimestamp(cellStartTimestamp).get();
-<a class="jxr_linenumber" name="316" href="#316">316</a>             <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
-<a class="jxr_linenumber" name="317" href="#317">317</a>                 <strong class="jxr_keyword">return</strong> commitTimeStamp.get();
-<a class="jxr_linenumber" name="318" href="#318">318</a>             }
+<a class="jxr_linenumber" name="285" href="#285">285</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="286" href="#286">286</a> 
+<a class="jxr_linenumber" name="287" href="#287">287</a>             preRollback(tx);
+<a class="jxr_linenumber" name="288" href="#288">288</a> 
+<a class="jxr_linenumber" name="289" href="#289">289</a>             <em class="jxr_comment">// Make sure its commit timestamp is 0, so the cleanup does the right job</em>
+<a class="jxr_linenumber" name="290" href="#290">290</a>             tx.setCommitTimestamp(0);
+<a class="jxr_linenumber" name="291" href="#291">291</a>             tx.setStatus(Status.ROLLEDBACK);
+<a class="jxr_linenumber" name="292" href="#292">292</a> 
+<a class="jxr_linenumber" name="293" href="#293">293</a>             postRollback(tx);
+<a class="jxr_linenumber" name="294" href="#294">294</a> 
+<a class="jxr_linenumber" name="295" href="#295">295</a>         } <strong class="jxr_keyword">catch</strong> (TransactionManagerException e) {
+<a class="jxr_linenumber" name="296" href="#296">296</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(e.getMessage(), e);
+<a class="jxr_linenumber" name="297" href="#297">297</a>         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="298" href="#298">298</a>             tx.cleanup();
+<a class="jxr_linenumber" name="299" href="#299">299</a>         }
+<a class="jxr_linenumber" name="300" href="#300">300</a> 
+<a class="jxr_linenumber" name="301" href="#301">301</a>     }
+<a class="jxr_linenumber" name="302" href="#302">302</a> 
+<a class="jxr_linenumber" name="303" href="#303">303</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="304" href="#304">304</a> <em class="jxr_javadoccomment">     * Allows transaction manager developers to perform actions after rolling-back a transaction.</em>
+<a class="jxr_linenumber" name="305" href="#305">305</a> <em class="jxr_javadoccomment">     * @param transaction</em>
+<a class="jxr_linenumber" name="306" href="#306">306</a> <em class="jxr_javadoccomment">     *            the transaction that was rolled-back.</em>
+<a class="jxr_linenumber" name="307" href="#307">307</a> <em class="jxr_javadoccomment">     * @throws TransactionManagerException in case of any issues</em>
+<a class="jxr_linenumber" name="308" href="#308">308</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="309" href="#309">309</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> postRollback(AbstractTransaction&lt;? <strong class="jxr_keyword">extends</strong> CellId&gt; transaction) <strong class="jxr_keyword">throws</strong> TransactionManagerException {}
+<a class="jxr_linenumber" name="310" href="#310">310</a> 
+<a class="jxr_linenumber" name="311" href="#311">311</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="312" href="#312">312</a> <em class="jxr_javadoccomment">     * @see java.io.Closeable#close()</em>
+<a class="jxr_linenumber" name="313" href="#313">313</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="314" href="#314">314</a>     @Override
+<a class="jxr_linenumber" name="315" href="#315">315</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="316" href="#316">316</a> 
+<a class="jxr_linenumber" name="317" href="#317">317</a>         tsoClient.close();
+<a class="jxr_linenumber" name="318" href="#318">318</a>         commitTableClient.close();
 <a class="jxr_linenumber" name="319" href="#319">319</a> 
-<a class="jxr_linenumber" name="320" href="#320">320</a>             <em class="jxr_comment">// 3) Read from shadow cell</em>
-<a class="jxr_linenumber" name="321" href="#321">321</a>             commitTimeStamp = readCommitTimestampFromShadowCell(cellStartTimestamp, locator);
-<a class="jxr_linenumber" name="322" href="#322">322</a>             <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
-<a class="jxr_linenumber" name="323" href="#323">323</a>                 <strong class="jxr_keyword">return</strong> commitTimeStamp.get();
-<a class="jxr_linenumber" name="324" href="#324">324</a>             }
+<a class="jxr_linenumber" name="320" href="#320">320</a>     }
+<a class="jxr_linenumber" name="321" href="#321">321</a> 
+<a class="jxr_linenumber" name="322" href="#322">322</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="323" href="#323">323</a>     <em class="jxr_comment">// Helper methods</em>
+<a class="jxr_linenumber" name="324" href="#324">324</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
 <a class="jxr_linenumber" name="325" href="#325">325</a> 
-<a class="jxr_linenumber" name="326" href="#326">326</a>             <em class="jxr_comment">// 4) Check the epoch and invalidate the entry</em>
-<a class="jxr_linenumber" name="327" href="#327">327</a>             <em class="jxr_comment">// if the data was written by a transaction from a previous epoch (previous TSO)</em>
-<a class="jxr_linenumber" name="328" href="#328">328</a>             <strong class="jxr_keyword">if</strong> (cellStartTimestamp &lt; epoch) {
-<a class="jxr_linenumber" name="329" href="#329">329</a>                 <strong class="jxr_keyword">boolean</strong> invalidated = commitTableClient.tryInvalidateTransaction(cellStartTimestamp).get();
-<a class="jxr_linenumber" name="330" href="#330">330</a>                 <strong class="jxr_keyword">if</strong> (invalidated) { <em class="jxr_comment">// Invalid commit timestamp</em>
-<a class="jxr_linenumber" name="331" href="#331">331</a>                     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(COMMIT_TABLE, CommitTable.INVALID_TRANSACTION_MARKER, false);
-<a class="jxr_linenumber" name="332" href="#332">332</a>                 }
-<a class="jxr_linenumber" name="333" href="#333">333</a>             }
-<a class="jxr_linenumber" name="334" href="#334">334</a> 
-<a class="jxr_linenumber" name="335" href="#335">335</a>             <em class="jxr_comment">// 5) We did not manage to invalidate the transactions then check the commit table</em>
-<a class="jxr_linenumber" name="336" href="#336">336</a>             commitTimeStamp = commitTableClient.getCommitTimestamp(cellStartTimestamp).get();
-<a class="jxr_linenumber" name="337" href="#337">337</a>             <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
-<a class="jxr_linenumber" name="338" href="#338">338</a>                 <strong class="jxr_keyword">return</strong> commitTimeStamp.get();
-<a class="jxr_linenumber" name="339" href="#339">339</a>             }
-<a class="jxr_linenumber" name="340" href="#340">340</a> 
-<a class="jxr_linenumber" name="341" href="#341">341</a>             <em class="jxr_comment">// 6) Read from shadow cell</em>
-<a class="jxr_linenumber" name="342" href="#342">342</a>             commitTimeStamp = readCommitTimestampFromShadowCell(cellStartTimestamp, locator);
-<a class="jxr_linenumber" name="343" href="#343">343</a>             <strong class="jxr_keyword">if</strong> (commitTimeStamp.isPresent()) {
-<a class="jxr_linenumber" name="344" href="#344">344</a>                 <strong class="jxr_keyword">return</strong> commitTimeStamp.get();
-<a class="jxr_linenumber" name="345" href="#345">345</a>             }
+<a class="jxr_linenumber" name="326" href="#326">326</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> enforceTransactionIsInRunningState(<a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> transaction) {
+<a class="jxr_linenumber" name="327" href="#327">327</a> 
+<a class="jxr_linenumber" name="328" href="#328">328</a>         <strong class="jxr_keyword">if</strong> (transaction.getStatus() != Status.RUNNING) {
+<a class="jxr_linenumber" name="329" href="#329">329</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Transaction was already "</span> + transaction.getStatus());
+<a class="jxr_linenumber" name="330" href="#330">330</a>         }
+<a class="jxr_linenumber" name="331" href="#331">331</a> 
+<a class="jxr_linenumber" name="332" href="#332">332</a>     }
+<a class="jxr_linenumber" name="333" href="#333">333</a> 
+<a class="jxr_linenumber" name="334" href="#334">334</a>     @SuppressWarnings(<span class="jxr_string">"unchecked"</sp

<TRUNCATED>


[08/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/OmidCompactor.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/OmidCompactor.html b/xref/org/apache/omid/transaction/OmidCompactor.html
index 8d1ed17..43a7574 100644
--- a/xref/org/apache/omid/transaction/OmidCompactor.html
+++ b/xref/org/apache/omid/transaction/OmidCompactor.html
@@ -28,125 +28,151 @@
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.annotations.VisibleForTesting;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTable;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CoprocessorEnvironment;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.ObserverContext;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.InternalScanner;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.ScanType;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.Store;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTable;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CoprocessorEnvironment;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.DoNotRetryIOException;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.HBaseShims;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.ObserverContext;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.CompactorScanner;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.InternalScanner;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.ScanType;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.Store;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
 <a class="jxr_linenumber" name="38" href="#38">38</a>  
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.Queue;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ConcurrentLinkedQueue;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.COMMIT_TABLE_NAME_KEY;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * Garbage collector for stale data: triggered upon HBase</em>
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment"> * compactions, it removes data from uncommitted transactions</em>
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * older than the low watermark using a special scanner</em>
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/OmidCompactor.html">OmidCompactor</a> <strong class="jxr_keyword">extends</strong> BaseRegionObserver {
-<a class="jxr_linenumber" name="51" href="#51">51</a>  
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(OmidCompactor.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="53" href="#53">53</a>  
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String HBASE_RETAIN_NON_TRANSACTIONALLY_DELETED_CELLS_KEY =
-<a class="jxr_linenumber" name="55" href="#55">55</a>              <span class="jxr_string">"omid.hbase.compactor.retain.tombstones"</span>;
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> HBASE_RETAIN_NON_TRANSACTIONALLY_DELETED_CELLS_DEFAULT = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.Optional;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.Queue;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ConcurrentLinkedQueue;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.COMMIT_TABLE_NAME_KEY;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> * Garbage collector for stale data: triggered upon HBase</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * compactions, it removes data from uncommitted transactions</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * older than the low watermark using a special scanner</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/OmidCompactor.html">OmidCompactor</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html">BaseRegionObserver</a> {
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(OmidCompactor.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="57" href="#57">57</a>  
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> String OMID_COMPACTABLE_CF_FLAG = <span class="jxr_string">"OMID_ENABLED"</span>;
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> commitTableConf = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> Configuration conf = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="62" href="#62">62</a>      @VisibleForTesting
-<a class="jxr_linenumber" name="63" href="#63">63</a>      Queue&lt;CommitTable.Client&gt; commitTableClientQueue = <strong class="jxr_keyword">new</strong> ConcurrentLinkedQueue&lt;&gt;();
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <em class="jxr_comment">// When compacting, if a cell which has been marked by HBase as Delete or</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <em class="jxr_comment">// Delete Family (that is, non-transactionally deleted), we allow the user</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>      <em class="jxr_comment">// to decide what the compactor scanner should do with it: retain it or not</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <em class="jxr_comment">// If retained, the deleted cell will appear after a minor compaction, but</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <em class="jxr_comment">// will be deleted anyways after a major one</em>
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> retainNonTransactionallyDeletedCells;
-<a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/OmidCompactor.html">OmidCompactor</a>() {
-<a class="jxr_linenumber" name="73" href="#73">73</a>          LOG.info(<span class="jxr_string">"Compactor coprocessor initialized via empty constructor"</span>);
-<a class="jxr_linenumber" name="74" href="#74">74</a>      }
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>      @Override
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> start(CoprocessorEnvironment env) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="78" href="#78">78</a>          LOG.info(<span class="jxr_string">"Starting compactor coprocessor"</span>);
-<a class="jxr_linenumber" name="79" href="#79">79</a>          conf = env.getConfiguration();
-<a class="jxr_linenumber" name="80" href="#80">80</a>          commitTableConf = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a>();
-<a class="jxr_linenumber" name="81" href="#81">81</a>          String commitTableName = conf.get(COMMIT_TABLE_NAME_KEY);
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">if</strong> (commitTableName != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="83" href="#83">83</a>              commitTableConf.setTableName(commitTableName);
-<a class="jxr_linenumber" name="84" href="#84">84</a>          }
-<a class="jxr_linenumber" name="85" href="#85">85</a>          retainNonTransactionallyDeletedCells =
-<a class="jxr_linenumber" name="86" href="#86">86</a>                  conf.getBoolean(HBASE_RETAIN_NON_TRANSACTIONALLY_DELETED_CELLS_KEY,
-<a class="jxr_linenumber" name="87" href="#87">87</a>                                  HBASE_RETAIN_NON_TRANSACTIONALLY_DELETED_CELLS_DEFAULT);
-<a class="jxr_linenumber" name="88" href="#88">88</a>          LOG.info(<span class="jxr_string">"Compactor coprocessor started"</span>);
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String HBASE_RETAIN_NON_TRANSACTIONALLY_DELETED_CELLS_KEY
+<a class="jxr_linenumber" name="59" href="#59">59</a>              = <span class="jxr_string">"omid.hbase.compactor.retain.tombstones"</span>;
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> HBASE_RETAIN_NON_TRANSACTIONALLY_DELETED_CELLS_DEFAULT = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> String OMID_COMPACTABLE_CF_FLAG = <span class="jxr_string">"OMID_ENABLED"</span>;
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> enableCompactorForAllFamilies = false;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> commitTableConf = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> Configuration conf = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="68" href="#68">68</a>      @VisibleForTesting
+<a class="jxr_linenumber" name="69" href="#69">69</a>      Queue&lt;CommitTable.Client&gt; commitTableClientQueue = <strong class="jxr_keyword">new</strong> ConcurrentLinkedQueue&lt;&gt;();
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>      <em class="jxr_comment">// When compacting, if a cell which has been marked by HBase as Delete or</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <em class="jxr_comment">// Delete Family (that is, non-transactionally deleted), we allow the user</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <em class="jxr_comment">// to decide what the compactor scanner should do with it: retain it or not</em>
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <em class="jxr_comment">// If retained, the deleted cell will appear after a minor compaction, but</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>      <em class="jxr_comment">// will be deleted anyways after a major one</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> retainNonTransactionallyDeletedCells;
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
+<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/OmidCompactor.html">OmidCompactor</a>() {
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">this</strong>(false);
+<a class="jxr_linenumber" name="80" href="#80">80</a>      }
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">public</strong> Optional getRegionObserver() {
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">return</strong> Optional.of(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="84" href="#84">84</a>      }
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/OmidCompactor.html">OmidCompactor</a>(<strong class="jxr_keyword">boolean</strong> enableCompactorForAllFamilies) {
+<a class="jxr_linenumber" name="87" href="#87">87</a>          LOG.info(<span class="jxr_string">"Compactor coprocessor initialized"</span>);
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <strong class="jxr_keyword">this</strong>.enableCompactorForAllFamilies = enableCompactorForAllFamilies;
 <a class="jxr_linenumber" name="89" href="#89">89</a>      }
 <a class="jxr_linenumber" name="90" href="#90">90</a>  
 <a class="jxr_linenumber" name="91" href="#91">91</a>      @Override
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> stop(CoprocessorEnvironment e) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="93" href="#93">93</a>          LOG.info(<span class="jxr_string">"Stopping compactor coprocessor"</span>);
-<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">if</strong> (commitTableClientQueue != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="95" href="#95">95</a>              <strong class="jxr_keyword">for</strong> (CommitTable.Client commitTableClient : commitTableClientQueue) {
-<a class="jxr_linenumber" name="96" href="#96">96</a>                  commitTableClient.close();
-<a class="jxr_linenumber" name="97" href="#97">97</a>              }
-<a class="jxr_linenumber" name="98" href="#98">98</a>          }
-<a class="jxr_linenumber" name="99" href="#99">99</a>          LOG.info(<span class="jxr_string">"Compactor coprocessor stopped"</span>);
-<a class="jxr_linenumber" name="100" href="#100">100</a>     }
-<a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>     @Override
-<a class="jxr_linenumber" name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> InternalScanner preCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,
-<a class="jxr_linenumber" name="104" href="#104">104</a>                                       Store store,
-<a class="jxr_linenumber" name="105" href="#105">105</a>                                       InternalScanner scanner,
-<a class="jxr_linenumber" name="106" href="#106">106</a>                                       ScanType scanType,
-<a class="jxr_linenumber" name="107" href="#107">107</a>                                       CompactionRequest request) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>         HTableDescriptor desc = e.getEnvironment().getRegion().getTableDesc();
-<a class="jxr_linenumber" name="110" href="#110">110</a>         HColumnDescriptor famDesc = desc.getFamily(Bytes.toBytes(store.getColumnFamilyName()));
-<a class="jxr_linenumber" name="111" href="#111">111</a>         <strong class="jxr_keyword">boolean</strong> omidCompactable = Boolean.valueOf(famDesc.getValue(OMID_COMPACTABLE_CF_FLAG));
-<a class="jxr_linenumber" name="112" href="#112">112</a>         <em class="jxr_comment">// only column families tagged as compactable are compacted with omid compactor</em>
-<a class="jxr_linenumber" name="113" href="#113">113</a>         <strong class="jxr_keyword">if</strong> (!omidCompactable) {
-<a class="jxr_linenumber" name="114" href="#114">114</a>             <strong class="jxr_keyword">return</strong> scanner;
-<a class="jxr_linenumber" name="115" href="#115">115</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="116" href="#116">116</a>             CommitTable.Client commitTableClient = commitTableClientQueue.poll();
-<a class="jxr_linenumber" name="117" href="#117">117</a>             <strong class="jxr_keyword">if</strong> (commitTableClient == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="118" href="#118">118</a>                 commitTableClient = initAndGetCommitTableClient();
-<a class="jxr_linenumber" name="119" href="#119">119</a>             }
-<a class="jxr_linenumber" name="120" href="#120">120</a>             <strong class="jxr_keyword">boolean</strong> isMajorCompaction = request.isMajor();
-<a class="jxr_linenumber" name="121" href="#121">121</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/CompactorScanner.html">CompactorScanner</a>(e,
-<a class="jxr_linenumber" name="122" href="#122">122</a>                                         scanner,
-<a class="jxr_linenumber" name="123" href="#123">123</a>                                         commitTableClient,
-<a class="jxr_linenumber" name="124" href="#124">124</a>                                         commitTableClientQueue,
-<a class="jxr_linenumber" name="125" href="#125">125</a>                                         isMajorCompaction,
-<a class="jxr_linenumber" name="126" href="#126">126</a>                                         retainNonTransactionallyDeletedCells);
-<a class="jxr_linenumber" name="127" href="#127">127</a>         }
-<a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>     }
-<a class="jxr_linenumber" name="130" href="#130">130</a> 
-<a class="jxr_linenumber" name="131" href="#131">131</a>     <strong class="jxr_keyword">private</strong> CommitTable.Client initAndGetCommitTableClient() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="132" href="#132">132</a>         LOG.info(<span class="jxr_string">"Trying to get the commit table client"</span>);
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> commitTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(conf, commitTableConf);
-<a class="jxr_linenumber" name="134" href="#134">134</a>         CommitTable.Client commitTableClient = commitTable.getClient();
-<a class="jxr_linenumber" name="135" href="#135">135</a>         LOG.info(<span class="jxr_string">"Commit table client obtained {}"</span>, commitTableClient.getClass().getCanonicalName());
-<a class="jxr_linenumber" name="136" href="#136">136</a>         <strong class="jxr_keyword">return</strong> commitTableClient;
-<a class="jxr_linenumber" name="137" href="#137">137</a>     }
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a> }
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> start(CoprocessorEnvironment env) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="93" href="#93">93</a>          LOG.info(<span class="jxr_string">"Starting compactor coprocessor"</span>);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          conf = env.getConfiguration();
+<a class="jxr_linenumber" name="95" href="#95">95</a>          commitTableConf = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a>();
+<a class="jxr_linenumber" name="96" href="#96">96</a>          String commitTableName = conf.get(COMMIT_TABLE_NAME_KEY);
+<a class="jxr_linenumber" name="97" href="#97">97</a>          <strong class="jxr_keyword">if</strong> (commitTableName != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="98" href="#98">98</a>              commitTableConf.setTableName(commitTableName);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          }
+<a class="jxr_linenumber" name="100" href="#100">100</a>         retainNonTransactionallyDeletedCells =
+<a class="jxr_linenumber" name="101" href="#101">101</a>                 conf.getBoolean(HBASE_RETAIN_NON_TRANSACTIONALLY_DELETED_CELLS_KEY,
+<a class="jxr_linenumber" name="102" href="#102">102</a>                         HBASE_RETAIN_NON_TRANSACTIONALLY_DELETED_CELLS_DEFAULT);
+<a class="jxr_linenumber" name="103" href="#103">103</a>         LOG.info(<span class="jxr_string">"Compactor coprocessor started"</span>);
+<a class="jxr_linenumber" name="104" href="#104">104</a>     }
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>     @Override
+<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> stop(CoprocessorEnvironment e) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="108" href="#108">108</a>         LOG.info(<span class="jxr_string">"Stopping compactor coprocessor"</span>);
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">if</strong> (commitTableClientQueue != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="110" href="#110">110</a>             <strong class="jxr_keyword">for</strong> (CommitTable.Client commitTableClient : commitTableClientQueue) {
+<a class="jxr_linenumber" name="111" href="#111">111</a>                 commitTableClient.close();
+<a class="jxr_linenumber" name="112" href="#112">112</a>             }
+<a class="jxr_linenumber" name="113" href="#113">113</a>         }
+<a class="jxr_linenumber" name="114" href="#114">114</a>         LOG.info(<span class="jxr_string">"Compactor coprocessor stopped"</span>);
+<a class="jxr_linenumber" name="115" href="#115">115</a>     }
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a> 
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">public</strong> InternalScanner preCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; env,
+<a class="jxr_linenumber" name="120" href="#120">120</a>                                       Store store,
+<a class="jxr_linenumber" name="121" href="#121">121</a>                                       InternalScanner scanner,
+<a class="jxr_linenumber" name="122" href="#122">122</a>                                       ScanType scanType,
+<a class="jxr_linenumber" name="123" href="#123">123</a>                                       CompactionRequest request) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">boolean</strong> omidCompactable;
+<a class="jxr_linenumber" name="125" href="#125">125</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="126" href="#126">126</a>             <strong class="jxr_keyword">if</strong> (enableCompactorForAllFamilies) {
+<a class="jxr_linenumber" name="127" href="#127">127</a>                 omidCompactable = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="128" href="#128">128</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="129" href="#129">129</a> 
+<a class="jxr_linenumber" name="130" href="#130">130</a>                 omidCompactable = HBaseShims.OmidCompactionEnabled(env, store, OMID_COMPACTABLE_CF_FLAG);
+<a class="jxr_linenumber" name="131" href="#131">131</a>             }
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>             <em class="jxr_comment">// only column families tagged as compactable are compacted</em>
+<a class="jxr_linenumber" name="134" href="#134">134</a>             <em class="jxr_comment">// with omid compactor</em>
+<a class="jxr_linenumber" name="135" href="#135">135</a>             <strong class="jxr_keyword">if</strong> (!omidCompactable) {
+<a class="jxr_linenumber" name="136" href="#136">136</a>                 <strong class="jxr_keyword">return</strong> scanner;
+<a class="jxr_linenumber" name="137" href="#137">137</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="138" href="#138">138</a>                 CommitTable.Client commitTableClient = commitTableClientQueue.poll();
+<a class="jxr_linenumber" name="139" href="#139">139</a>                 <strong class="jxr_keyword">if</strong> (commitTableClient == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="140" href="#140">140</a>                     commitTableClient = initAndGetCommitTableClient();
+<a class="jxr_linenumber" name="141" href="#141">141</a>                 }
+<a class="jxr_linenumber" name="142" href="#142">142</a>                 <strong class="jxr_keyword">boolean</strong> isMajorCompaction = request.isMajor();
+<a class="jxr_linenumber" name="143" href="#143">143</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/hadoop/hbase/regionserver/CompactorScanner.html">CompactorScanner</a>(env,
+<a class="jxr_linenumber" name="144" href="#144">144</a>                         scanner,
+<a class="jxr_linenumber" name="145" href="#145">145</a>                         commitTableClient,
+<a class="jxr_linenumber" name="146" href="#146">146</a>                         commitTableClientQueue,
+<a class="jxr_linenumber" name="147" href="#147">147</a>                         isMajorCompaction,
+<a class="jxr_linenumber" name="148" href="#148">148</a>                         retainNonTransactionallyDeletedCells);
+<a class="jxr_linenumber" name="149" href="#149">149</a>             }
+<a class="jxr_linenumber" name="150" href="#150">150</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="151" href="#151">151</a>             <strong class="jxr_keyword">throw</strong> e;
+<a class="jxr_linenumber" name="152" href="#152">152</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="153" href="#153">153</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> DoNotRetryIOException(e);
+<a class="jxr_linenumber" name="154" href="#154">154</a>         }
+<a class="jxr_linenumber" name="155" href="#155">155</a>     }
+<a class="jxr_linenumber" name="156" href="#156">156</a> 
+<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">private</strong> CommitTable.Client initAndGetCommitTableClient() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="158" href="#158">158</a>         LOG.info(<span class="jxr_string">"Trying to get the commit table client"</span>);
+<a class="jxr_linenumber" name="159" href="#159">159</a>         <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> commitTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(conf, commitTableConf);
+<a class="jxr_linenumber" name="160" href="#160">160</a>         CommitTable.Client commitTableClient = commitTable.getClient();
+<a class="jxr_linenumber" name="161" href="#161">161</a>         LOG.info(<span class="jxr_string">"Commit table client obtained {}"</span>, commitTableClient.getClass().getCanonicalName());
+<a class="jxr_linenumber" name="162" href="#162">162</a>         <strong class="jxr_keyword">return</strong> commitTableClient;
+<a class="jxr_linenumber" name="163" href="#163">163</a>     }
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/OmidSnapshotFilter.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/OmidSnapshotFilter.html b/xref/org/apache/omid/transaction/OmidSnapshotFilter.html
new file mode 100644
index 0000000..457fc55
--- /dev/null
+++ b/xref/org/apache/omid/transaction/OmidSnapshotFilter.html
@@ -0,0 +1,239 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>OmidSnapshotFilter xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/OmidSnapshotFilter.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.InvalidProtocolBufferException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.InternalScanner;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.RegionScanner;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTable;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.proto.TSOProto;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.AbstractTransaction.VisibilityLevel;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.HBaseShims;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CoprocessorEnvironment;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.ObserverContext;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.RegionAccessWrapper;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> java.util.Optional;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> java.util.Queue;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ConcurrentHashMap;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ConcurrentLinkedQueue;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.COMMIT_TABLE_NAME_KEY;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * Server side filtering to identify the transaction snapshot.</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/OmidSnapshotFilter.html">OmidSnapshotFilter</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html">BaseRegionObserver</a> {
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(OmidSnapshotFilter.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> commitTableConf = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> Configuration conf = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> Queue&lt;SnapshotFilterImpl&gt; snapshotFilterQueue = <strong class="jxr_keyword">new</strong> ConcurrentLinkedQueue&lt;&gt;();
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> Map&lt;Object, SnapshotFilterImpl&gt; snapshotFilterMap = <strong class="jxr_keyword">new</strong> ConcurrentHashMap();
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> CommitTable.Client inMemoryCommitTable = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/OmidSnapshotFilter.html">OmidSnapshotFilter</a>(CommitTable.Client commitTableClient) {
+<a class="jxr_linenumber" name="73" href="#73">73</a>          LOG.info(<span class="jxr_string">"Compactor coprocessor initialized with constructor for testing"</span>);
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">this</strong>.inMemoryCommitTable = commitTableClient;
+<a class="jxr_linenumber" name="75" href="#75">75</a>      }
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/OmidSnapshotFilter.html">OmidSnapshotFilter</a>() {
+<a class="jxr_linenumber" name="78" href="#78">78</a>          LOG.info(<span class="jxr_string">"Compactor coprocessor initialized via empty constructor"</span>);
+<a class="jxr_linenumber" name="79" href="#79">79</a>      }
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">public</strong> Optional getRegionObserver() {
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">return</strong> Optional.of(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="84" href="#84">84</a>      }
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>      @Override
+<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> start(CoprocessorEnvironment env) {
+<a class="jxr_linenumber" name="88" href="#88">88</a>          LOG.info(<span class="jxr_string">"Starting snapshot filter coprocessor"</span>);
+<a class="jxr_linenumber" name="89" href="#89">89</a>          conf = env.getConfiguration();
+<a class="jxr_linenumber" name="90" href="#90">90</a>          commitTableConf = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a>();
+<a class="jxr_linenumber" name="91" href="#91">91</a>          String commitTableName = conf.get(COMMIT_TABLE_NAME_KEY);
+<a class="jxr_linenumber" name="92" href="#92">92</a>          <strong class="jxr_keyword">if</strong> (commitTableName != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="93" href="#93">93</a>              commitTableConf.setTableName(commitTableName);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          }
+<a class="jxr_linenumber" name="95" href="#95">95</a>          LOG.info(<span class="jxr_string">"Snapshot filter started"</span>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>      }
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>      @Override
+<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> stop(CoprocessorEnvironment e) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="100" href="#100">100</a>         LOG.info(<span class="jxr_string">"Stopping snapshot filter coprocessor"</span>);
+<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">if</strong> (snapshotFilterQueue != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="102" href="#102">102</a>             <strong class="jxr_keyword">for</strong> (SnapshotFilterImpl snapshotFilter: snapshotFilterQueue) {
+<a class="jxr_linenumber" name="103" href="#103">103</a>                 snapshotFilter.closeCommitTableClient();
+<a class="jxr_linenumber" name="104" href="#104">104</a>             }
+<a class="jxr_linenumber" name="105" href="#105">105</a>         }
+<a class="jxr_linenumber" name="106" href="#106">106</a>         LOG.info(<span class="jxr_string">"Snapshot filter stopped"</span>);
+<a class="jxr_linenumber" name="107" href="#107">107</a>     }
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>     @Override
+<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> postGetOp(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Get get, List&lt;Cell&gt; results) {
+<a class="jxr_linenumber" name="112" href="#112">112</a>         <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter = snapshotFilterMap.get(get);
+<a class="jxr_linenumber" name="113" href="#113">113</a>         <strong class="jxr_keyword">if</strong> (snapshotFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="114" href="#114">114</a>             snapshotFilterQueue.add(snapshotFilter);
+<a class="jxr_linenumber" name="115" href="#115">115</a>         }
+<a class="jxr_linenumber" name="116" href="#116">116</a>     }
+<a class="jxr_linenumber" name="117" href="#117">117</a> 
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>     @Override
+<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preGetOp(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, Get get, List&lt;Cell&gt; results)
+<a class="jxr_linenumber" name="121" href="#121">121</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>         <strong class="jxr_keyword">if</strong> (get.getAttribute(CellUtils.CLIENT_GET_ATTRIBUTE) == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="124" href="#124">124</a> 
+<a class="jxr_linenumber" name="125" href="#125">125</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hbaseTransaction = getHBaseTransaction(get.getAttribute(CellUtils.TRANSACTION_ATTRIBUTE));
+<a class="jxr_linenumber" name="126" href="#126">126</a>         <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter = getSnapshotFilter(e);
+<a class="jxr_linenumber" name="127" href="#127">127</a>         snapshotFilterMap.put(get, snapshotFilter);
+<a class="jxr_linenumber" name="128" href="#128">128</a> 
+<a class="jxr_linenumber" name="129" href="#129">129</a>         get.setMaxVersions();
+<a class="jxr_linenumber" name="130" href="#130">130</a>         Filter newFilter = TransactionFilters.getVisibilityFilter(get.getFilter(),
+<a class="jxr_linenumber" name="131" href="#131">131</a>                 snapshotFilter, hbaseTransaction);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         get.setFilter(newFilter);
+<a class="jxr_linenumber" name="133" href="#133">133</a>     }
+<a class="jxr_linenumber" name="134" href="#134">134</a> 
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> getSnapshotFilter(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e)
+<a class="jxr_linenumber" name="136" href="#136">136</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="137" href="#137">137</a>         <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter= snapshotFilterQueue.poll();
+<a class="jxr_linenumber" name="138" href="#138">138</a>         <strong class="jxr_keyword">if</strong> (snapshotFilter == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="139" href="#139">139</a>             <a href="../../../../org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html">RegionAccessWrapper</a> regionAccessWrapper =
+<a class="jxr_linenumber" name="140" href="#140">140</a>                     <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html">RegionAccessWrapper</a>(HBaseShims.getRegionCoprocessorRegion(e.getEnvironment()));
+<a class="jxr_linenumber" name="141" href="#141">141</a>             snapshotFilter = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a>(regionAccessWrapper, initAndGetCommitTableClient());
+<a class="jxr_linenumber" name="142" href="#142">142</a>         }
+<a class="jxr_linenumber" name="143" href="#143">143</a>         <strong class="jxr_keyword">return</strong> snapshotFilter;
+<a class="jxr_linenumber" name="144" href="#144">144</a>     }
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a> 
+<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">public</strong> RegionScanner preScannerOpen(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,
+<a class="jxr_linenumber" name="148" href="#148">148</a>                                         Scan scan,
+<a class="jxr_linenumber" name="149" href="#149">149</a>                                         RegionScanner s) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="150" href="#150">150</a>         preScannerOpen(e,scan);
+<a class="jxr_linenumber" name="151" href="#151">151</a>         <strong class="jxr_keyword">return</strong> s;
+<a class="jxr_linenumber" name="152" href="#152">152</a>     }
+<a class="jxr_linenumber" name="153" href="#153">153</a> 
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preScannerOpen(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,
+<a class="jxr_linenumber" name="156" href="#156">156</a>                                Scan scan) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="157" href="#157">157</a>         byte[] byteTransaction = scan.getAttribute(CellUtils.TRANSACTION_ATTRIBUTE);
+<a class="jxr_linenumber" name="158" href="#158">158</a> 
+<a class="jxr_linenumber" name="159" href="#159">159</a>         <strong class="jxr_keyword">if</strong> (byteTransaction == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="160" href="#160">160</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="161" href="#161">161</a>         }
+<a class="jxr_linenumber" name="162" href="#162">162</a> 
+<a class="jxr_linenumber" name="163" href="#163">163</a>         <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> hbaseTransaction = getHBaseTransaction(byteTransaction);
+<a class="jxr_linenumber" name="164" href="#164">164</a>         <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter = getSnapshotFilter(e);
+<a class="jxr_linenumber" name="165" href="#165">165</a> 
+<a class="jxr_linenumber" name="166" href="#166">166</a>         scan.setMaxVersions();
+<a class="jxr_linenumber" name="167" href="#167">167</a>         Filter newFilter = TransactionFilters.getVisibilityFilter(scan.getFilter(),
+<a class="jxr_linenumber" name="168" href="#168">168</a>                 snapshotFilter, hbaseTransaction);
+<a class="jxr_linenumber" name="169" href="#169">169</a>         scan.setFilter(newFilter);
+<a class="jxr_linenumber" name="170" href="#170">170</a>         snapshotFilterMap.put(scan, snapshotFilter);
+<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="172" href="#172">172</a>     }
+<a class="jxr_linenumber" name="173" href="#173">173</a> 
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a> 
+<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> RegionScanner postScannerOpen(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,
+<a class="jxr_linenumber" name="177" href="#177">177</a>                                          Scan scan,
+<a class="jxr_linenumber" name="178" href="#178">178</a>                                          RegionScanner s) {
+<a class="jxr_linenumber" name="179" href="#179">179</a>         byte[] byteTransaction = scan.getAttribute(CellUtils.TRANSACTION_ATTRIBUTE);
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>         <strong class="jxr_keyword">if</strong> (byteTransaction == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="182" href="#182">182</a>             <strong class="jxr_keyword">return</strong> s;
+<a class="jxr_linenumber" name="183" href="#183">183</a>         }
+<a class="jxr_linenumber" name="184" href="#184">184</a> 
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter = snapshotFilterMap.get(scan);
+<a class="jxr_linenumber" name="186" href="#186">186</a>         assert(snapshotFilter != <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         snapshotFilterMap.remove(scan);
+<a class="jxr_linenumber" name="188" href="#188">188</a>         snapshotFilterMap.put(s, snapshotFilter);
+<a class="jxr_linenumber" name="189" href="#189">189</a>         <strong class="jxr_keyword">return</strong> s;
+<a class="jxr_linenumber" name="190" href="#190">190</a>     }
+<a class="jxr_linenumber" name="191" href="#191">191</a> 
+<a class="jxr_linenumber" name="192" href="#192">192</a> 
+<a class="jxr_linenumber" name="193" href="#193">193</a>     @Override
+<a class="jxr_linenumber" name="194" href="#194">194</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> preScannerClose(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e, InternalScanner s) {
+<a class="jxr_linenumber" name="195" href="#195">195</a>         <a href="../../../../org/apache/omid/transaction/SnapshotFilterImpl.html">SnapshotFilterImpl</a> snapshotFilter = snapshotFilterMap.get(s);
+<a class="jxr_linenumber" name="196" href="#196">196</a>         <strong class="jxr_keyword">if</strong> (snapshotFilter != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="197" href="#197">197</a>             snapshotFilterQueue.add(snapshotFilter);
+<a class="jxr_linenumber" name="198" href="#198">198</a>         }
+<a class="jxr_linenumber" name="199" href="#199">199</a>     }
+<a class="jxr_linenumber" name="200" href="#200">200</a> 
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a> 
+<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> getHBaseTransaction(byte[] byteTransaction)
+<a class="jxr_linenumber" name="204" href="#204">204</a>             <strong class="jxr_keyword">throws</strong> InvalidProtocolBufferException {
+<a class="jxr_linenumber" name="205" href="#205">205</a>         TSOProto.Transaction transaction = TSOProto.Transaction.parseFrom(byteTransaction);
+<a class="jxr_linenumber" name="206" href="#206">206</a>         <strong class="jxr_keyword">long</strong> id = transaction.getTimestamp();
+<a class="jxr_linenumber" name="207" href="#207">207</a>         <strong class="jxr_keyword">long</strong> readTs = transaction.getReadTimestamp();
+<a class="jxr_linenumber" name="208" href="#208">208</a>         <strong class="jxr_keyword">long</strong> epoch = transaction.getEpoch();
+<a class="jxr_linenumber" name="209" href="#209">209</a>         <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> visibilityLevel = VisibilityLevel.fromInteger(transaction.getVisibilityLevel());
+<a class="jxr_linenumber" name="210" href="#210">210</a> 
+<a class="jxr_linenumber" name="211" href="#211">211</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a>(id, readTs, visibilityLevel, epoch, <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;(), <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;(), <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="212" href="#212">212</a>     }
+<a class="jxr_linenumber" name="213" href="#213">213</a> 
+<a class="jxr_linenumber" name="214" href="#214">214</a>     <strong class="jxr_keyword">private</strong> CommitTable.Client initAndGetCommitTableClient() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="215" href="#215">215</a>         LOG.info(<span class="jxr_string">"Trying to get the commit table client"</span>);
+<a class="jxr_linenumber" name="216" href="#216">216</a>         <strong class="jxr_keyword">if</strong> (inMemoryCommitTable != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="217" href="#217">217</a>             <strong class="jxr_keyword">return</strong> inMemoryCommitTable;
+<a class="jxr_linenumber" name="218" href="#218">218</a>         }
+<a class="jxr_linenumber" name="219" href="#219">219</a>         <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> commitTable = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(conf, commitTableConf);
+<a class="jxr_linenumber" name="220" href="#220">220</a>         CommitTable.Client commitTableClient = commitTable.getClient();
+<a class="jxr_linenumber" name="221" href="#221">221</a>         LOG.info(<span class="jxr_string">"Commit table client obtained {}"</span>, commitTableClient.getClass().getCanonicalName());
+<a class="jxr_linenumber" name="222" href="#222">222</a>         <strong class="jxr_keyword">return</strong> commitTableClient;
+<a class="jxr_linenumber" name="223" href="#223">223</a>     }
+<a class="jxr_linenumber" name="224" href="#224">224</a> 
+<a class="jxr_linenumber" name="225" href="#225">225</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/SnapshotFilter.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/SnapshotFilter.html b/xref/org/apache/omid/transaction/SnapshotFilter.html
new file mode 100644
index 0000000..c6fc9fd
--- /dev/null
+++ b/xref/org/apache/omid/transaction/SnapshotFilter.html
@@ -0,0 +1,64 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>SnapshotFilter xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/apidocs/org/apache/omid/transaction/SnapshotFilter.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">interface</strong> <a href="../../../../org/apache/omid/transaction/SnapshotFilter.html">SnapshotFilter</a> {
+<a class="jxr_linenumber" name="34" href="#34">34</a>      
+<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">public</strong> Result get(Get get, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">public</strong> ResultScanner getScanner(Scan scan, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">public</strong> List&lt;Cell&gt; filterCellsForSnapshot(List&lt;Cell&gt; rawCells, <a href="../../../../org/apache/omid/transaction/HBaseTransaction.html">HBaseTransaction</a> transaction,
+<a class="jxr_linenumber" name="40" href="#40">40</a>              <strong class="jxr_keyword">int</strong> versionsToRequest, Map&lt;String, Long&gt; familyDeletionCache, Map&lt;String,byte[]&gt; attributeMap) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  
+<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isCommitted(<a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> hBaseCellId, <strong class="jxr_keyword">long</strong> epoch) <strong class="jxr_keyword">throws</strong> TransactionException;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">public</strong> CommitTimestamp locateCellCommitTimestamp(<strong class="jxr_keyword">long</strong> cellStartTimestamp, <strong class="jxr_keyword">long</strong> epoch,
+<a class="jxr_linenumber" name="45" href="#45">45</a>              <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> locator) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">public</strong> Optional&lt;CommitTimestamp&gt; readCommitTimestampFromShadowCell(<strong class="jxr_keyword">long</strong> cellStartTimestamp, <a href="../../../../org/apache/omid/transaction/CommitTimestampLocator.html">CommitTimestampLocator</a> locator)
+<a class="jxr_linenumber" name="48" href="#48">48</a>              <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  
+<a class="jxr_linenumber" name="50" href="#50">50</a>  }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+


[16/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tools/hbase/HBaseLogin.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tools/hbase/HBaseLogin.html b/xref/org/apache/omid/tools/hbase/HBaseLogin.html
index f185026..7027757 100644
--- a/xref/org/apache/omid/tools/hbase/HBaseLogin.html
+++ b/xref/org/apache/omid/tools/hbase/HBaseLogin.html
@@ -31,38 +31,21 @@
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
 <a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
 <a class="jxr_linenumber" name="23" href="#23">23</a>  
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> javax.annotation.Nullable;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/HBaseLogin.html">HBaseLogin</a> {
-<a class="jxr_linenumber" name="28" href="#28">28</a>  
-<a class="jxr_linenumber" name="29" href="#29">29</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseLogin.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="30" href="#30">30</a>  
-<a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">volatile</strong> UserGroupInformation ugi;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>      @Nullable
-<a class="jxr_linenumber" name="34" href="#34">34</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> UserGroupInformation loginIfNeeded(<a href="../../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a> config) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>          <strong class="jxr_keyword">if</strong> (UserGroupInformation.isSecurityEnabled()) {
-<a class="jxr_linenumber" name="37" href="#37">37</a>              LOG.info(<span class="jxr_string">"Security enabled when connecting to HBase"</span>);
-<a class="jxr_linenumber" name="38" href="#38">38</a>              <strong class="jxr_keyword">if</strong> (ugi == <strong class="jxr_keyword">null</strong>) { <em class="jxr_comment">// Use lazy initialization with double-checked locking</em>
-<a class="jxr_linenumber" name="39" href="#39">39</a>                  <strong class="jxr_keyword">synchronized</strong> (HBaseLogin.<strong class="jxr_keyword">class</strong>) {
-<a class="jxr_linenumber" name="40" href="#40">40</a>                      <strong class="jxr_keyword">if</strong> (ugi == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="41" href="#41">41</a>                          LOG.info(<span class="jxr_string">"Login with Kerberos. User={}, keytab={}"</span>, config.getPrincipal(), config.getKeytab());
-<a class="jxr_linenumber" name="42" href="#42">42</a>                          UserGroupInformation.loginUserFromKeytab(config.getPrincipal(), config.getKeytab());
-<a class="jxr_linenumber" name="43" href="#43">43</a>                          ugi = UserGroupInformation.getCurrentUser();
-<a class="jxr_linenumber" name="44" href="#44">44</a>                      }
-<a class="jxr_linenumber" name="45" href="#45">45</a>                  }
-<a class="jxr_linenumber" name="46" href="#46">46</a>              } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="47" href="#47">47</a>                  LOG.info(<span class="jxr_string">"User {}, already trusted (Kerberos). Avoiding 2nd login as it causes problems"</span>, ugi.toString());
-<a class="jxr_linenumber" name="48" href="#48">48</a>              }
-<a class="jxr_linenumber" name="49" href="#49">49</a>          } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="50" href="#50">50</a>              LOG.warn(<span class="jxr_string">"Security NOT enabled when connecting to HBase. Act at your own risk. NULL UGI returned"</span>);
-<a class="jxr_linenumber" name="51" href="#51">51</a>          }
-<a class="jxr_linenumber" name="52" href="#52">52</a>          <strong class="jxr_keyword">return</strong> ugi;
-<a class="jxr_linenumber" name="53" href="#53">53</a>      }
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>  }
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/HBaseLogin.html">HBaseLogin</a> {
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseLogin.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> UserGroupInformation loginIfNeeded(<a href="../../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a> config) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="31" href="#31">31</a>          <strong class="jxr_keyword">if</strong> (UserGroupInformation.isSecurityEnabled()) {
+<a class="jxr_linenumber" name="32" href="#32">32</a>              LOG.info(<span class="jxr_string">"Security is enabled, logging in with principal={}, keytab={}"</span>,
+<a class="jxr_linenumber" name="33" href="#33">33</a>                      config.getPrincipal(), config.getKeytab());
+<a class="jxr_linenumber" name="34" href="#34">34</a>              UserGroupInformation.loginUserFromKeytab(config.getPrincipal(), config.getKeytab());
+<a class="jxr_linenumber" name="35" href="#35">35</a>          }
+<a class="jxr_linenumber" name="36" href="#36">36</a>          <strong class="jxr_keyword">return</strong> UserGroupInformation.getCurrentUser();
+<a class="jxr_linenumber" name="37" href="#37">37</a>      }
+<a class="jxr_linenumber" name="38" href="#38">38</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tools/hbase/OmidTableManager.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tools/hbase/OmidTableManager.html b/xref/org/apache/omid/tools/hbase/OmidTableManager.html
index edf5d01..5326ff9 100644
--- a/xref/org/apache/omid/tools/hbase/OmidTableManager.html
+++ b/xref/org/apache/omid/tools/hbase/OmidTableManager.html
@@ -27,190 +27,196 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.tools.hbase;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.IParameterValidator;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.JCommander;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.Parameter;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.ParameterException;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.Parameters;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.ParametersDelegate;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.HBaseShims;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.KeyGenerator;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.KeyGeneratorImplementations;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.RegionSplitter;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> * Helper class to create required HBase tables by Omid</em>
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">OmidTableManager</a> {
-<a class="jxr_linenumber" name="48" href="#48">48</a>  
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(OmidTableManager.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String COMMIT_TABLE_COMMAND_NAME = <span class="jxr_string">"commit-table"</span>;
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TIMESTAMP_TABLE_COMMAND_NAME = <span class="jxr_string">"timestamp-table"</span>;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Admin;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.HBaseShims;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.KeyGenerator;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.KeyGeneratorImplementations;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.RegionSplitter;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.IParameterValidator;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.JCommander;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.Parameter;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.ParameterException;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.Parameters;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.ParametersDelegate;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment"> * Helper class to create required HBase tables by Omid</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">OmidTableManager</a> {
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(OmidTableManager.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="53" href="#53">53</a>  
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[][] commitTableFamilies = <strong class="jxr_keyword">new</strong> byte[][]{
-<a class="jxr_linenumber" name="55" href="#55">55</a>              Bytes.toBytes(HBaseCommitTableConfig.DEFAULT_COMMIT_TABLE_CF_NAME),
-<a class="jxr_linenumber" name="56" href="#56">56</a>              Bytes.toBytes(HBaseCommitTableConfig.DEFAULT_COMMIT_TABLE_LWM_CF_NAME)};
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[][] timestampTableFamilies = <strong class="jxr_keyword">new</strong> byte[][]{
-<a class="jxr_linenumber" name="58" href="#58">58</a>              Bytes.toBytes(HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_CF_NAME)};
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> JCommander commandLine;
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">MainConfig</a> mainConfig = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">MainConfig</a>();
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">CommitTableCommand</a> commitTableCommand = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">CommitTableCommand</a>();
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">TimestampTableCommand</a> timestampTableCommand = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">TimestampTableCommand</a>();
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">OmidTableManager</a>(String... args) {
-<a class="jxr_linenumber" name="66" href="#66">66</a>          commandLine = <strong class="jxr_keyword">new</strong> JCommander(mainConfig);
-<a class="jxr_linenumber" name="67" href="#67">67</a>          commandLine.addCommand(COMMIT_TABLE_COMMAND_NAME, commitTableCommand);
-<a class="jxr_linenumber" name="68" href="#68">68</a>          commandLine.addCommand(TIMESTAMP_TABLE_COMMAND_NAME, timestampTableCommand);
-<a class="jxr_linenumber" name="69" href="#69">69</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="70" href="#70">70</a>              commandLine.parse(args);
-<a class="jxr_linenumber" name="71" href="#71">71</a>          } <strong class="jxr_keyword">catch</strong> (ParameterException ex) {
-<a class="jxr_linenumber" name="72" href="#72">72</a>              commandLine.usage();
-<a class="jxr_linenumber" name="73" href="#73">73</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(ex.getMessage());
-<a class="jxr_linenumber" name="74" href="#74">74</a>          }
-<a class="jxr_linenumber" name="75" href="#75">75</a>      }
-<a class="jxr_linenumber" name="76" href="#76">76</a>  
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> executeActionsOnHBase(Configuration hbaseConf) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>          HBaseLogin.loginIfNeeded(mainConfig.loginFlags);
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">try</strong> (HBaseAdmin hBaseAdmin = <strong class="jxr_keyword">new</strong> HBaseAdmin(hbaseConf)) {
-<a class="jxr_linenumber" name="82" href="#82">82</a>              byte[][] tableFamilies;
-<a class="jxr_linenumber" name="83" href="#83">83</a>              byte[][] splitKeys = <strong class="jxr_keyword">new</strong> byte[0][0];
-<a class="jxr_linenumber" name="84" href="#84">84</a>              String tableName;
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>              LOG.info(<span class="jxr_string">"----------------------------------------------------------------------------------------------"</span>);
-<a class="jxr_linenumber" name="87" href="#87">87</a>              <strong class="jxr_keyword">switch</strong> (commandLine.getParsedCommand()) {
-<a class="jxr_linenumber" name="88" href="#88">88</a>                  <strong class="jxr_keyword">case</strong> COMMIT_TABLE_COMMAND_NAME:
-<a class="jxr_linenumber" name="89" href="#89">89</a>                      LOG.info(<span class="jxr_string">"Performing actions related to COMMIT TABLE"</span>);
-<a class="jxr_linenumber" name="90" href="#90">90</a>                      tableName = commitTableCommand.tableName;
-<a class="jxr_linenumber" name="91" href="#91">91</a>                      tableFamilies = commitTableFamilies;
-<a class="jxr_linenumber" name="92" href="#92">92</a>                      <strong class="jxr_keyword">if</strong> (commitTableCommand.numRegions &gt; 1) {
-<a class="jxr_linenumber" name="93" href="#93">93</a>                          splitKeys = splitInUniformRegions(hbaseConf, commitTableCommand.numRegions);
-<a class="jxr_linenumber" name="94" href="#94">94</a>                      }
-<a class="jxr_linenumber" name="95" href="#95">95</a>                      <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="96" href="#96">96</a>                  <strong class="jxr_keyword">case</strong> TIMESTAMP_TABLE_COMMAND_NAME:
-<a class="jxr_linenumber" name="97" href="#97">97</a>                      LOG.info(<span class="jxr_string">"Performing actions related to TIMESTAMP TABLE"</span>);
-<a class="jxr_linenumber" name="98" href="#98">98</a>                      tableName = timestampTableCommand.tableName;
-<a class="jxr_linenumber" name="99" href="#99">99</a>                      tableFamilies = timestampTableFamilies;
-<a class="jxr_linenumber" name="100" href="#100">100</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="101" href="#101">101</a>                 <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="102" href="#102">102</a>                     LOG.error(<span class="jxr_string">"Unknown command: {}"</span>, commandLine.getParsedCommand());
-<a class="jxr_linenumber" name="103" href="#103">103</a>                     commandLine.usage();
-<a class="jxr_linenumber" name="104" href="#104">104</a>                     <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="105" href="#105">105</a>             }
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>             createTable(hBaseAdmin, tableName, tableFamilies, splitKeys, 1);
-<a class="jxr_linenumber" name="108" href="#108">108</a>             LOG.info(<span class="jxr_string">"----------------------------------------------------------------------------------------------"</span>);
-<a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>         }
-<a class="jxr_linenumber" name="111" href="#111">111</a>     }
-<a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String... args) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="114" href="#114">114</a> 
-<a class="jxr_linenumber" name="115" href="#115">115</a>         <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">OmidTableManager</a> tableManager = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">OmidTableManager</a>(args);
-<a class="jxr_linenumber" name="116" href="#116">116</a>         tableManager.executeActionsOnHBase(HBaseConfiguration.create());
-<a class="jxr_linenumber" name="117" href="#117">117</a> 
-<a class="jxr_linenumber" name="118" href="#118">118</a>     }
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a>     <em class="jxr_comment">// Helper methods and classes</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String COMMIT_TABLE_COMMAND_NAME = <span class="jxr_string">"commit-table"</span>;
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TIMESTAMP_TABLE_COMMAND_NAME = <span class="jxr_string">"timestamp-table"</span>;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[][] commitTableFamilies = <strong class="jxr_keyword">new</strong> byte[][]{
+<a class="jxr_linenumber" name="58" href="#58">58</a>              Bytes.toBytes(HBaseCommitTableConfig.DEFAULT_COMMIT_TABLE_CF_NAME),
+<a class="jxr_linenumber" name="59" href="#59">59</a>              Bytes.toBytes(HBaseCommitTableConfig.DEFAULT_COMMIT_TABLE_LWM_CF_NAME)};
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[][] timestampTableFamilies = <strong class="jxr_keyword">new</strong> byte[][]{
+<a class="jxr_linenumber" name="61" href="#61">61</a>              Bytes.toBytes(HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_CF_NAME)};
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> JCommander commandLine;
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">MainConfig</a> mainConfig = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">MainConfig</a>();
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">CommitTableCommand</a> commitTableCommand = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">CommitTableCommand</a>();
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">TimestampTableCommand</a> timestampTableCommand = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">TimestampTableCommand</a>();
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">OmidTableManager</a>(String... args) {
+<a class="jxr_linenumber" name="69" href="#69">69</a>          commandLine = <strong class="jxr_keyword">new</strong> JCommander(mainConfig);
+<a class="jxr_linenumber" name="70" href="#70">70</a>          commandLine.addCommand(COMMIT_TABLE_COMMAND_NAME, commitTableCommand);
+<a class="jxr_linenumber" name="71" href="#71">71</a>          commandLine.addCommand(TIMESTAMP_TABLE_COMMAND_NAME, timestampTableCommand);
+<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="73" href="#73">73</a>              commandLine.parse(args);
+<a class="jxr_linenumber" name="74" href="#74">74</a>          } <strong class="jxr_keyword">catch</strong> (ParameterException ex) {
+<a class="jxr_linenumber" name="75" href="#75">75</a>              commandLine.usage();
+<a class="jxr_linenumber" name="76" href="#76">76</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(ex.getMessage());
+<a class="jxr_linenumber" name="77" href="#77">77</a>          }
+<a class="jxr_linenumber" name="78" href="#78">78</a>      }
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> executeActionsOnHBase(Configuration hbaseConf) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>          HBaseLogin.loginIfNeeded(mainConfig.loginFlags);
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>          <strong class="jxr_keyword">try</strong> (Connection conn = ConnectionFactory.createConnection(hbaseConf);
+<a class="jxr_linenumber" name="85" href="#85">85</a>               Admin hBaseAdmin = conn.getAdmin()) {
+<a class="jxr_linenumber" name="86" href="#86">86</a>              byte[][] tableFamilies;
+<a class="jxr_linenumber" name="87" href="#87">87</a>              byte[][] splitKeys = <strong class="jxr_keyword">new</strong> byte[0][0];
+<a class="jxr_linenumber" name="88" href="#88">88</a>              String tableName;
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>              LOG.info(<span class="jxr_string">"----------------------------------------------------------------------------------------------"</span>);
+<a class="jxr_linenumber" name="91" href="#91">91</a>              <strong class="jxr_keyword">switch</strong> (commandLine.getParsedCommand()) {
+<a class="jxr_linenumber" name="92" href="#92">92</a>                  <strong class="jxr_keyword">case</strong> COMMIT_TABLE_COMMAND_NAME:
+<a class="jxr_linenumber" name="93" href="#93">93</a>                      LOG.info(<span class="jxr_string">"Performing actions related to COMMIT TABLE"</span>);
+<a class="jxr_linenumber" name="94" href="#94">94</a>                      tableName = commitTableCommand.tableName;
+<a class="jxr_linenumber" name="95" href="#95">95</a>                      tableFamilies = commitTableFamilies;
+<a class="jxr_linenumber" name="96" href="#96">96</a>                      <strong class="jxr_keyword">if</strong> (commitTableCommand.numRegions &gt; 1) {
+<a class="jxr_linenumber" name="97" href="#97">97</a>                          splitKeys = splitInUniformRegions(hbaseConf, commitTableCommand.numRegions);
+<a class="jxr_linenumber" name="98" href="#98">98</a>                      }
+<a class="jxr_linenumber" name="99" href="#99">99</a>                      <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="100" href="#100">100</a>                 <strong class="jxr_keyword">case</strong> TIMESTAMP_TABLE_COMMAND_NAME:
+<a class="jxr_linenumber" name="101" href="#101">101</a>                     LOG.info(<span class="jxr_string">"Performing actions related to TIMESTAMP TABLE"</span>);
+<a class="jxr_linenumber" name="102" href="#102">102</a>                     tableName = timestampTableCommand.tableName;
+<a class="jxr_linenumber" name="103" href="#103">103</a>                     tableFamilies = timestampTableFamilies;
+<a class="jxr_linenumber" name="104" href="#104">104</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="105" href="#105">105</a>                 <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="106" href="#106">106</a>                     LOG.error(<span class="jxr_string">"Unknown command: {}"</span>, commandLine.getParsedCommand());
+<a class="jxr_linenumber" name="107" href="#107">107</a>                     commandLine.usage();
+<a class="jxr_linenumber" name="108" href="#108">108</a>                     <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="109" href="#109">109</a>             }
+<a class="jxr_linenumber" name="110" href="#110">110</a> 
+<a class="jxr_linenumber" name="111" href="#111">111</a>             createTable(hBaseAdmin, tableName, tableFamilies, splitKeys, 1);
+<a class="jxr_linenumber" name="112" href="#112">112</a>             LOG.info(<span class="jxr_string">"----------------------------------------------------------------------------------------------"</span>);
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>         }
+<a class="jxr_linenumber" name="115" href="#115">115</a>     }
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String... args) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>         <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">OmidTableManager</a> tableManager = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">OmidTableManager</a>(args);
+<a class="jxr_linenumber" name="120" href="#120">120</a>         tableManager.executeActionsOnHBase(HBaseConfiguration.create());
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>     }
 <a class="jxr_linenumber" name="123" href="#123">123</a> 
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[][] splitInUniformRegions(Configuration hBaseConf, <strong class="jxr_keyword">int</strong> numRegions) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>         <a href="../../../../../org/apache/omid/committable/hbase/KeyGenerator.html">KeyGenerator</a> keyGen = KeyGeneratorImplementations.defaultKeyGenerator();
-<a class="jxr_linenumber" name="127" href="#127">127</a>         RegionSplitter.SplitAlgorithm algo =
-<a class="jxr_linenumber" name="128" href="#128">128</a>                 RegionSplitter.newSplitAlgoInstance(hBaseConf, RegionSplitter.UniformSplit.<strong class="jxr_keyword">class</strong>.getName());
-<a class="jxr_linenumber" name="129" href="#129">129</a>         algo.setFirstRow(algo.rowToStr(keyGen.startTimestampToKey(0)));
-<a class="jxr_linenumber" name="130" href="#130">130</a>         algo.setLastRow(algo.rowToStr(keyGen.startTimestampToKey(Long.MAX_VALUE)));
-<a class="jxr_linenumber" name="131" href="#131">131</a> 
-<a class="jxr_linenumber" name="132" href="#132">132</a>         <em class="jxr_comment">// Return the split keys</em>
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">return</strong> algo.split(numRegions);
-<a class="jxr_linenumber" name="134" href="#134">134</a> 
-<a class="jxr_linenumber" name="135" href="#135">135</a>     }
-<a class="jxr_linenumber" name="136" href="#136">136</a> 
-<a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createTable(HBaseAdmin admin, String tableName, byte[][] families, byte[][] splitKeys,
-<a class="jxr_linenumber" name="138" href="#138">138</a>                                     <strong class="jxr_keyword">int</strong> maxVersions)
-<a class="jxr_linenumber" name="139" href="#139">139</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="125" href="#125">125</a>     <em class="jxr_comment">// Helper methods and classes</em>
+<a class="jxr_linenumber" name="126" href="#126">126</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[][] splitInUniformRegions(Configuration hBaseConf, <strong class="jxr_keyword">int</strong> numRegions) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="129" href="#129">129</a> 
+<a class="jxr_linenumber" name="130" href="#130">130</a>         <a href="../../../../../org/apache/omid/committable/hbase/KeyGenerator.html">KeyGenerator</a> keyGen = KeyGeneratorImplementations.defaultKeyGenerator();
+<a class="jxr_linenumber" name="131" href="#131">131</a>         RegionSplitter.SplitAlgorithm algo =
+<a class="jxr_linenumber" name="132" href="#132">132</a>                 RegionSplitter.newSplitAlgoInstance(hBaseConf, RegionSplitter.UniformSplit.<strong class="jxr_keyword">class</strong>.getName());
+<a class="jxr_linenumber" name="133" href="#133">133</a>         algo.setFirstRow(algo.rowToStr(keyGen.startTimestampToKey(0)));
+<a class="jxr_linenumber" name="134" href="#134">134</a>         algo.setLastRow(algo.rowToStr(keyGen.startTimestampToKey(Long.MAX_VALUE)));
+<a class="jxr_linenumber" name="135" href="#135">135</a> 
+<a class="jxr_linenumber" name="136" href="#136">136</a>         <em class="jxr_comment">// Return the split keys</em>
+<a class="jxr_linenumber" name="137" href="#137">137</a>         <strong class="jxr_keyword">return</strong> algo.split(numRegions);
+<a class="jxr_linenumber" name="138" href="#138">138</a> 
+<a class="jxr_linenumber" name="139" href="#139">139</a>     }
 <a class="jxr_linenumber" name="140" href="#140">140</a> 
-<a class="jxr_linenumber" name="141" href="#141">141</a>         LOG.info(<span class="jxr_string">"About to create Table named {} with {} splits"</span>, tableName, splitKeys.length);
-<a class="jxr_linenumber" name="142" href="#142">142</a> 
-<a class="jxr_linenumber" name="143" href="#143">143</a>         <strong class="jxr_keyword">if</strong> (admin.tableExists(tableName)) {
-<a class="jxr_linenumber" name="144" href="#144">144</a>             LOG.error(<span class="jxr_string">"Table {} already exists. Table creation cancelled"</span>, tableName);
-<a class="jxr_linenumber" name="145" href="#145">145</a>             <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="146" href="#146">146</a>         }
-<a class="jxr_linenumber" name="147" href="#147">147</a> 
-<a class="jxr_linenumber" name="148" href="#148">148</a>         HTableDescriptor tableDescriptor = <strong class="jxr_keyword">new</strong> HTableDescriptor(TableName.valueOf(tableName));
-<a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>         <strong class="jxr_keyword">for</strong> (byte[] family : families) {
-<a class="jxr_linenumber" name="151" href="#151">151</a>             HColumnDescriptor colDescriptor = <strong class="jxr_keyword">new</strong> HColumnDescriptor(family);
-<a class="jxr_linenumber" name="152" href="#152">152</a>             colDescriptor.setMaxVersions(maxVersions);
-<a class="jxr_linenumber" name="153" href="#153">153</a>             HBaseShims.addFamilyToHTableDescriptor(tableDescriptor, colDescriptor);
-<a class="jxr_linenumber" name="154" href="#154">154</a>             LOG.info(<span class="jxr_string">"\tAdding Family {}"</span>, colDescriptor);
-<a class="jxr_linenumber" name="155" href="#155">155</a>         }
-<a class="jxr_linenumber" name="156" href="#156">156</a> 
-<a class="jxr_linenumber" name="157" href="#157">157</a>         admin.createTable(tableDescriptor, splitKeys);
-<a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>         LOG.info(<span class="jxr_string">"Table {} created. Regions: {}"</span>, tableName, admin.getTableRegions(Bytes.toBytes(tableName)).size());
-<a class="jxr_linenumber" name="160" href="#160">160</a> 
-<a class="jxr_linenumber" name="161" href="#161">161</a>     }
-<a class="jxr_linenumber" name="162" href="#162">162</a> 
-<a class="jxr_linenumber" name="163" href="#163">163</a>     <em class="jxr_comment">// Configuration-related classes</em>
-<a class="jxr_linenumber" name="164" href="#164">164</a> 
-<a class="jxr_linenumber" name="165" href="#165">165</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">MainConfig</a> {
-<a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>         @ParametersDelegate
-<a class="jxr_linenumber" name="168" href="#168">168</a>         <a href="../../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a> loginFlags = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a>();
+<a class="jxr_linenumber" name="141" href="#141">141</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createTable(Admin admin, String tableName, byte[][] families, byte[][] splitKeys,
+<a class="jxr_linenumber" name="142" href="#142">142</a>                                     <strong class="jxr_keyword">int</strong> maxVersions)
+<a class="jxr_linenumber" name="143" href="#143">143</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="144" href="#144">144</a> 
+<a class="jxr_linenumber" name="145" href="#145">145</a>         LOG.info(<span class="jxr_string">"About to create Table named {} with {} splits"</span>, tableName, splitKeys.length);
+<a class="jxr_linenumber" name="146" href="#146">146</a> 
+<a class="jxr_linenumber" name="147" href="#147">147</a>         TableName hTableName = TableName.valueOf(tableName); 
+<a class="jxr_linenumber" name="148" href="#148">148</a>         <strong class="jxr_keyword">if</strong> (admin.tableExists(hTableName)) {
+<a class="jxr_linenumber" name="149" href="#149">149</a>             LOG.error(<span class="jxr_string">"Table {} already exists. Table creation cancelled"</span>, tableName);
+<a class="jxr_linenumber" name="150" href="#150">150</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="151" href="#151">151</a>         }
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>         HTableDescriptor tableDescriptor = <strong class="jxr_keyword">new</strong> HTableDescriptor(TableName.valueOf(tableName));
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>         <strong class="jxr_keyword">for</strong> (byte[] family : families) {
+<a class="jxr_linenumber" name="156" href="#156">156</a>             HColumnDescriptor colDescriptor = <strong class="jxr_keyword">new</strong> HColumnDescriptor(family);
+<a class="jxr_linenumber" name="157" href="#157">157</a>             colDescriptor.setMaxVersions(maxVersions);
+<a class="jxr_linenumber" name="158" href="#158">158</a>             HBaseShims.addFamilyToHTableDescriptor(tableDescriptor, colDescriptor);
+<a class="jxr_linenumber" name="159" href="#159">159</a>             LOG.info(<span class="jxr_string">"\tAdding Family {}"</span>, colDescriptor);
+<a class="jxr_linenumber" name="160" href="#160">160</a>         }
+<a class="jxr_linenumber" name="161" href="#161">161</a> 
+<a class="jxr_linenumber" name="162" href="#162">162</a>         admin.createTable(tableDescriptor, splitKeys);
+<a class="jxr_linenumber" name="163" href="#163">163</a> 
+<a class="jxr_linenumber" name="164" href="#164">164</a>         LOG.info(<span class="jxr_string">"Table {} created. Regions: {}"</span>, tableName, admin.getTableRegions(hTableName).size());
+<a class="jxr_linenumber" name="165" href="#165">165</a> 
+<a class="jxr_linenumber" name="166" href="#166">166</a>     }
+<a class="jxr_linenumber" name="167" href="#167">167</a> 
+<a class="jxr_linenumber" name="168" href="#168">168</a>     <em class="jxr_comment">// Configuration-related classes</em>
 <a class="jxr_linenumber" name="169" href="#169">169</a> 
-<a class="jxr_linenumber" name="170" href="#170">170</a>     }
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">MainConfig</a> {
 <a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>     @Parameters(commandDescription = <span class="jxr_string">"Specifies configuration for the Commit Table"</span>)
-<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">CommitTableCommand</a> {
+<a class="jxr_linenumber" name="172" href="#172">172</a>         @ParametersDelegate
+<a class="jxr_linenumber" name="173" href="#173">173</a>         <a href="../../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a> loginFlags = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a>();
 <a class="jxr_linenumber" name="174" href="#174">174</a> 
-<a class="jxr_linenumber" name="175" href="#175">175</a>         @Parameter(names = <span class="jxr_string">"-tableName"</span>, description = <span class="jxr_string">"Table name where to stores the commits"</span>, required = false)
-<a class="jxr_linenumber" name="176" href="#176">176</a>         String tableName = HBaseCommitTableConfig.DEFAULT_COMMIT_TABLE_NAME;
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>         @Parameter(names = <span class="jxr_string">"-numRegions"</span>, description = <span class="jxr_string">"Number of splits (to pre-split tableName)"</span>, required = false,
-<a class="jxr_linenumber" name="179" href="#179">179</a>                    validateWith = IntegerGreaterThanZero.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="180" href="#180">180</a>         <strong class="jxr_keyword">int</strong> numRegions = 16;
-<a class="jxr_linenumber" name="181" href="#181">181</a> 
-<a class="jxr_linenumber" name="182" href="#182">182</a>     }
-<a class="jxr_linenumber" name="183" href="#183">183</a> 
-<a class="jxr_linenumber" name="184" href="#184">184</a>     @Parameters(commandDescription = <span class="jxr_string">"Specifies configuration for the Timestamp Table"</span>)
-<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">TimestampTableCommand</a> {
+<a class="jxr_linenumber" name="175" href="#175">175</a>     }
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>     @Parameters(commandDescription = <span class="jxr_string">"Specifies configuration for the Commit Table"</span>)
+<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">CommitTableCommand</a> {
+<a class="jxr_linenumber" name="179" href="#179">179</a> 
+<a class="jxr_linenumber" name="180" href="#180">180</a>         @Parameter(names = <span class="jxr_string">"-tableName"</span>, description = <span class="jxr_string">"Table name where to stores the commits"</span>, required = false)
+<a class="jxr_linenumber" name="181" href="#181">181</a>         String tableName = HBaseCommitTableConfig.DEFAULT_COMMIT_TABLE_NAME;
+<a class="jxr_linenumber" name="182" href="#182">182</a> 
+<a class="jxr_linenumber" name="183" href="#183">183</a>         @Parameter(names = <span class="jxr_string">"-numRegions"</span>, description = <span class="jxr_string">"Number of splits (to pre-split tableName)"</span>, required = false,
+<a class="jxr_linenumber" name="184" href="#184">184</a>                    validateWith = IntegerGreaterThanZero.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">int</strong> numRegions = 16;
 <a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>         @Parameter(names = <span class="jxr_string">"-tableName"</span>, description = <span class="jxr_string">"Table name where to store timestamps"</span>)
-<a class="jxr_linenumber" name="188" href="#188">188</a>         String tableName = HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME;
-<a class="jxr_linenumber" name="189" href="#189">189</a> 
-<a class="jxr_linenumber" name="190" href="#190">190</a>     }
+<a class="jxr_linenumber" name="187" href="#187">187</a>     }
+<a class="jxr_linenumber" name="188" href="#188">188</a> 
+<a class="jxr_linenumber" name="189" href="#189">189</a>     @Parameters(commandDescription = <span class="jxr_string">"Specifies configuration for the Timestamp Table"</span>)
+<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">TimestampTableCommand</a> {
 <a class="jxr_linenumber" name="191" href="#191">191</a> 
-<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">IntegerGreaterThanZero</a> <strong class="jxr_keyword">implements</strong> IParameterValidator {
-<a class="jxr_linenumber" name="193" href="#193">193</a> 
-<a class="jxr_linenumber" name="194" href="#194">194</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> validate(String name, String value) <strong class="jxr_keyword">throws</strong> ParameterException {
-<a class="jxr_linenumber" name="195" href="#195">195</a>             <strong class="jxr_keyword">int</strong> n = Integer.parseInt(value);
-<a class="jxr_linenumber" name="196" href="#196">196</a>             <strong class="jxr_keyword">if</strong> (n &lt;= 0) {
-<a class="jxr_linenumber" name="197" href="#197">197</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ParameterException(<span class="jxr_string">"Parameter "</span> + name + <span class="jxr_string">" should be &gt; 0 (found "</span> + value + <span class="jxr_string">")"</span>);
-<a class="jxr_linenumber" name="198" href="#198">198</a>             }
-<a class="jxr_linenumber" name="199" href="#199">199</a>         }
-<a class="jxr_linenumber" name="200" href="#200">200</a> 
-<a class="jxr_linenumber" name="201" href="#201">201</a>     }
-<a class="jxr_linenumber" name="202" href="#202">202</a> 
-<a class="jxr_linenumber" name="203" href="#203">203</a> }
+<a class="jxr_linenumber" name="192" href="#192">192</a>         @Parameter(names = <span class="jxr_string">"-tableName"</span>, description = <span class="jxr_string">"Table name where to store timestamps"</span>)
+<a class="jxr_linenumber" name="193" href="#193">193</a>         String tableName = HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME;
+<a class="jxr_linenumber" name="194" href="#194">194</a> 
+<a class="jxr_linenumber" name="195" href="#195">195</a>     }
+<a class="jxr_linenumber" name="196" href="#196">196</a> 
+<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tools/hbase/OmidTableManager.html">IntegerGreaterThanZero</a> <strong class="jxr_keyword">implements</strong> IParameterValidator {
+<a class="jxr_linenumber" name="198" href="#198">198</a> 
+<a class="jxr_linenumber" name="199" href="#199">199</a>         @Override
+<a class="jxr_linenumber" name="200" href="#200">200</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> validate(String name, String value) <strong class="jxr_keyword">throws</strong> ParameterException {
+<a class="jxr_linenumber" name="201" href="#201">201</a>             <strong class="jxr_keyword">int</strong> n = Integer.parseInt(value);
+<a class="jxr_linenumber" name="202" href="#202">202</a>             <strong class="jxr_keyword">if</strong> (n &lt;= 0) {
+<a class="jxr_linenumber" name="203" href="#203">203</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> ParameterException(<span class="jxr_string">"Parameter "</span> + name + <span class="jxr_string">" should be &gt; 0 (found "</span> + value + <span class="jxr_string">")"</span>);
+<a class="jxr_linenumber" name="204" href="#204">204</a>             }
+<a class="jxr_linenumber" name="205" href="#205">205</a>         }
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>     }
+<a class="jxr_linenumber" name="208" href="#208">208</a> 
+<a class="jxr_linenumber" name="209" href="#209">209</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tools/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tools/hbase/package-frame.html b/xref/org/apache/omid/tools/hbase/package-frame.html
index 89e6c67..edb1f51 100644
--- a/xref/org/apache/omid/tools/hbase/package-frame.html
+++ b/xref/org/apache/omid/tools/hbase/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.tools.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.tools.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tools/hbase/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tools/hbase/package-summary.html b/xref/org/apache/omid/tools/hbase/package-summary.html
index 0904143..15f815b 100644
--- a/xref/org/apache/omid/tools/hbase/package-summary.html
+++ b/xref/org/apache/omid/tools/hbase/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.tools.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.tools.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>


[03/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/PersistenceProcessorHandler.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/PersistenceProcessorHandler.html b/xref/org/apache/omid/tso/PersistenceProcessorHandler.html
index dc4f6e9..38667a3 100644
--- a/xref/org/apache/omid/tso/PersistenceProcessorHandler.html
+++ b/xref/org/apache/omid/tso/PersistenceProcessorHandler.html
@@ -27,193 +27,179 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.tso;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.annotations.VisibleForTesting;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Objects;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.lmax.disruptor.WorkHandler;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Histogram;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Timer;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> javax.inject.Inject;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicInteger;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.lmax.disruptor.WorkHandler;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Histogram;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.Timer;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> javax.inject.Inject;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> com.codahale.metrics.MetricRegistry.name;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.PersistEvent.Type.COMMIT_RETRY;
 <a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> com.codahale.metrics.MetricRegistry.name;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.PersistEvent.Type.*;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessorHandler.html">PersistenceProcessorHandler</a> <strong class="jxr_keyword">implements</strong> WorkHandler&lt;PersistenceProcessorImpl.PersistBatchEvent&gt; {
 <a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessorHandler.html">PersistenceProcessorHandler</a> <strong class="jxr_keyword">implements</strong> WorkHandler&lt;PersistenceProcessorImpl.PersistBatchEvent&gt; {
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(PersistenceProcessorHandler.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(PersistenceProcessorHandler.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>      @VisibleForTesting
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> AtomicInteger consecutiveSequenceCreator = <strong class="jxr_keyword">new</strong> AtomicInteger(0);
-<a class="jxr_linenumber" name="44" href="#44">44</a>  
-<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String id;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String tsoHostAndPort;
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/LeaseManagement.html">LeaseManagement</a> leaseManager;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/ReplyProcessor.html">ReplyProcessor</a> replyProcessor;
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/RetryProcessor.html">RetryProcessor</a> retryProcessor;
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> CommitTable.Writer writer;
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/Panicker.html">Panicker</a> panicker;
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <em class="jxr_comment">// Metrics in this component</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> flushTimer;
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Histogram.html">Histogram</a> batchSizeHistogram;
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Histogram.html">Histogram</a> flushedCommitEventsHistogram;
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>      @Inject
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <a href="../../../../org/apache/omid/tso/PersistenceProcessorHandler.html">PersistenceProcessorHandler</a>(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics,
-<a class="jxr_linenumber" name="62" href="#62">62</a>                                  String tsoHostAndPort, <em class="jxr_comment">// TODO This should not be passed here. Should be part of panicker</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>                                  <a href="../../../../org/apache/omid/tso/LeaseManagement.html">LeaseManagement</a> leaseManager,
-<a class="jxr_linenumber" name="64" href="#64">64</a>                                  <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> commitTable,
-<a class="jxr_linenumber" name="65" href="#65">65</a>                                  <a href="../../../../org/apache/omid/tso/ReplyProcessor.html">ReplyProcessor</a> replyProcessor,
-<a class="jxr_linenumber" name="66" href="#66">66</a>                                  <a href="../../../../org/apache/omid/tso/RetryProcessor.html">RetryProcessor</a> retryProcessor,
-<a class="jxr_linenumber" name="67" href="#67">67</a>                                  <a href="../../../../org/apache/omid/tso/Panicker.html">Panicker</a> panicker)
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">throws</strong> InterruptedException, ExecutionException, IOException {
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>          <strong class="jxr_keyword">this</strong>.id = String.valueOf(consecutiveSequenceCreator.getAndIncrement());
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">this</strong>.tsoHostAndPort = tsoHostAndPort;
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">this</strong>.leaseManager = leaseManager;
-<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">this</strong>.writer = commitTable.getWriter();
-<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">this</strong>.replyProcessor = replyProcessor;
-<a class="jxr_linenumber" name="75" href="#75">75</a>          <strong class="jxr_keyword">this</strong>.retryProcessor = retryProcessor;
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">this</strong>.panicker = panicker;
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>          <em class="jxr_comment">// Metrics setup</em>
-<a class="jxr_linenumber" name="79" href="#79">79</a>          String flushTimerName = name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"persistence-processor-handler"</span>, id, <span class="jxr_string">"flush"</span>, <span class="jxr_string">"latency"</span>);
-<a class="jxr_linenumber" name="80" href="#80">80</a>          flushTimer = metrics.timer(flushTimerName);
-<a class="jxr_linenumber" name="81" href="#81">81</a>          String flushedCommitEventsName = name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"persistence-processor-handler"</span>, id, <span class="jxr_string">"flushed"</span>, <span class="jxr_string">"commits"</span>, <span class="jxr_string">"size"</span>);
-<a class="jxr_linenumber" name="82" href="#82">82</a>          flushedCommitEventsHistogram = metrics.histogram(flushedCommitEventsName);
-<a class="jxr_linenumber" name="83" href="#83">83</a>          String batchSizeMetricsName = name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"persistence-processor-handler"</span>, id, <span class="jxr_string">"batch"</span>, <span class="jxr_string">"size"</span>);
-<a class="jxr_linenumber" name="84" href="#84">84</a>          batchSizeHistogram = metrics.histogram(batchSizeMetricsName);
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>      }
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">public</strong> String getId() {
-<a class="jxr_linenumber" name="89" href="#89">89</a>          <strong class="jxr_keyword">return</strong> id;
-<a class="jxr_linenumber" name="90" href="#90">90</a>      }
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>      @Override
-<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onEvent(PersistenceProcessorImpl.PersistBatchEvent batchEvent) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="94" href="#94">94</a>  
-<a class="jxr_linenumber" name="95" href="#95">95</a>          <strong class="jxr_keyword">int</strong> commitEventsToFlush = 0;
-<a class="jxr_linenumber" name="96" href="#96">96</a>          <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch = batchEvent.getBatch();
-<a class="jxr_linenumber" name="97" href="#97">97</a>          <strong class="jxr_keyword">int</strong> numOfBatchedEvents = batch.getNumEvents();
-<a class="jxr_linenumber" name="98" href="#98">98</a>          batchSizeHistogram.update(numOfBatchedEvents);
-<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i &lt; numOfBatchedEvents; i++) {
-<a class="jxr_linenumber" name="100" href="#100">100</a>             <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> event = batch.get(i);
-<a class="jxr_linenumber" name="101" href="#101">101</a>             <strong class="jxr_keyword">switch</strong> (event.getType()) {
-<a class="jxr_linenumber" name="102" href="#102">102</a>                 <strong class="jxr_keyword">case</strong> TIMESTAMP:
-<a class="jxr_linenumber" name="103" href="#103">103</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.timestamp.latency"</span>);
-<a class="jxr_linenumber" name="104" href="#104">104</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="105" href="#105">105</a>                 <strong class="jxr_keyword">case</strong> COMMIT:
-<a class="jxr_linenumber" name="106" href="#106">106</a>                     writer.addCommittedTransaction(event.getStartTimestamp(), event.getCommitTimestamp());
-<a class="jxr_linenumber" name="107" href="#107">107</a>                     commitEventsToFlush++;
-<a class="jxr_linenumber" name="108" href="#108">108</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="109" href="#109">109</a>                 <strong class="jxr_keyword">case</strong> COMMIT_RETRY:
-<a class="jxr_linenumber" name="110" href="#110">110</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.commit-retry.latency"</span>);
-<a class="jxr_linenumber" name="111" href="#111">111</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="112" href="#112">112</a>                 <strong class="jxr_keyword">case</strong> ABORT:
-<a class="jxr_linenumber" name="113" href="#113">113</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.abort.latency"</span>);
-<a class="jxr_linenumber" name="114" href="#114">114</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="115" href="#115">115</a>                 <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="116" href="#116">116</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Event not allowed in Persistent Processor Handler: "</span> + event);
-<a class="jxr_linenumber" name="117" href="#117">117</a>             }
-<a class="jxr_linenumber" name="118" href="#118">118</a>         }
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>         <em class="jxr_comment">// Flush and send the responses back to the client. WARNING: Before sending the responses, first we need</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a>         <em class="jxr_comment">// to filter commit retries in the batch to disambiguate them.</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a>         flush(commitEventsToFlush);
-<a class="jxr_linenumber" name="123" href="#123">123</a>         filterAndDissambiguateClientRetries(batch);
-<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i &lt; batch.getNumEvents(); i++) { <em class="jxr_comment">// Just for statistics</em>
-<a class="jxr_linenumber" name="125" href="#125">125</a>             <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> event = batch.get(i);
-<a class="jxr_linenumber" name="126" href="#126">126</a>             <strong class="jxr_keyword">switch</strong> (event.getType()) {
-<a class="jxr_linenumber" name="127" href="#127">127</a>                 <strong class="jxr_keyword">case</strong> TIMESTAMP:
-<a class="jxr_linenumber" name="128" href="#128">128</a>                     event.getMonCtx().timerStart(<span class="jxr_string">"reply.processor.timestamp.latency"</span>);
-<a class="jxr_linenumber" name="129" href="#129">129</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="130" href="#130">130</a>                 <strong class="jxr_keyword">case</strong> COMMIT:
-<a class="jxr_linenumber" name="131" href="#131">131</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.commit.latency"</span>);
-<a class="jxr_linenumber" name="132" href="#132">132</a>                     event.getMonCtx().timerStart(<span class="jxr_string">"reply.processor.commit.latency"</span>);
-<a class="jxr_linenumber" name="133" href="#133">133</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="134" href="#134">134</a>                 <strong class="jxr_keyword">case</strong> COMMIT_RETRY:
-<a class="jxr_linenumber" name="135" href="#135">135</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"COMMIT_RETRY events must be filtered before this step: "</span> + event);
-<a class="jxr_linenumber" name="136" href="#136">136</a>                 <strong class="jxr_keyword">case</strong> ABORT:
-<a class="jxr_linenumber" name="137" href="#137">137</a>                     event.getMonCtx().timerStart(<span class="jxr_string">"reply.processor.abort.latency"</span>);
-<a class="jxr_linenumber" name="138" href="#138">138</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="139" href="#139">139</a>                 <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="140" href="#140">140</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Event not allowed in Persistent Processor Handler: "</span> + event);
-<a class="jxr_linenumber" name="141" href="#141">141</a>             }
-<a class="jxr_linenumber" name="142" href="#142">142</a>         }
-<a class="jxr_linenumber" name="143" href="#143">143</a>         replyProcessor.manageResponsesBatch(batchEvent.getBatchSequence(), batch);
-<a class="jxr_linenumber" name="144" href="#144">144</a> 
-<a class="jxr_linenumber" name="145" href="#145">145</a>     }
-<a class="jxr_linenumber" name="146" href="#146">146</a> 
-<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">void</strong> flush(<strong class="jxr_keyword">int</strong> commitEventsToFlush) {
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>         commitSuicideIfNotMaster();
-<a class="jxr_linenumber" name="150" href="#150">150</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="151" href="#151">151</a>             <strong class="jxr_keyword">long</strong> startFlushTimeInNs = System.nanoTime();
-<a class="jxr_linenumber" name="152" href="#152">152</a>             <strong class="jxr_keyword">if</strong>(commitEventsToFlush &gt; 0) {
-<a class="jxr_linenumber" name="153" href="#153">153</a>                 writer.flush();
-<a class="jxr_linenumber" name="154" href="#154">154</a>             }
-<a class="jxr_linenumber" name="155" href="#155">155</a>             flushTimer.update(System.nanoTime() - startFlushTimeInNs);
-<a class="jxr_linenumber" name="156" href="#156">156</a>             flushedCommitEventsHistogram.update(commitEventsToFlush);
-<a class="jxr_linenumber" name="157" href="#157">157</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="158" href="#158">158</a>             panicker.panic(<span class="jxr_string">"Error persisting commit batch"</span>, e);
-<a class="jxr_linenumber" name="159" href="#159">159</a>         }
-<a class="jxr_linenumber" name="160" href="#160">160</a>         commitSuicideIfNotMaster();
-<a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>     }
-<a class="jxr_linenumber" name="163" href="#163">163</a> 
-<a class="jxr_linenumber" name="164" href="#164">164</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> commitSuicideIfNotMaster() {
-<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">if</strong> (!leaseManager.stillInLeasePeriod()) {
-<a class="jxr_linenumber" name="166" href="#166">166</a>             panicker.panic(<span class="jxr_string">"Replica "</span> + tsoHostAndPort + <span class="jxr_string">" lost mastership whilst flushing data. Committing suicide"</span>);
-<a class="jxr_linenumber" name="167" href="#167">167</a>         }
-<a class="jxr_linenumber" name="168" href="#168">168</a>     }
-<a class="jxr_linenumber" name="169" href="#169">169</a> 
-<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">void</strong> filterAndDissambiguateClientRetries(<a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch) {
-<a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>         <strong class="jxr_keyword">int</strong> currentEventIdx = 0;
-<a class="jxr_linenumber" name="173" href="#173">173</a>         <strong class="jxr_keyword">while</strong> (currentEventIdx &lt;= batch.getLastEventIdx()) {
-<a class="jxr_linenumber" name="174" href="#174">174</a>             <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> event = batch.get(currentEventIdx);
-<a class="jxr_linenumber" name="175" href="#175">175</a>             <strong class="jxr_keyword">if</strong> (event.getType() == COMMIT_RETRY) {
-<a class="jxr_linenumber" name="176" href="#176">176</a>                 retryProcessor.disambiguateRetryRequestHeuristically(event.getStartTimestamp(), event.getChannel(), event.getMonCtx());
-<a class="jxr_linenumber" name="177" href="#177">177</a>                 <em class="jxr_comment">// Swap the disambiguated event with the last batch event &amp; decrease the # of remaining elems to process</em>
-<a class="jxr_linenumber" name="178" href="#178">178</a>                 swapBatchElements(batch, currentEventIdx, batch.getLastEventIdx());
-<a class="jxr_linenumber" name="179" href="#179">179</a>                 batch.decreaseNumEvents();
-<a class="jxr_linenumber" name="180" href="#180">180</a>                 <strong class="jxr_keyword">if</strong> (batch.isEmpty()) {
-<a class="jxr_linenumber" name="181" href="#181">181</a>                     <strong class="jxr_keyword">break</strong>; <em class="jxr_comment">// We're OK to call now the reply processor</em>
-<a class="jxr_linenumber" name="182" href="#182">182</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="183" href="#183">183</a>                     <strong class="jxr_keyword">continue</strong>; <em class="jxr_comment">// Otherwise we continue checking for retries from the new event in the current position</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a>                 }
-<a class="jxr_linenumber" name="185" href="#185">185</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="186" href="#186">186</a>                 currentEventIdx++; <em class="jxr_comment">// Let's check if the next event was a retry</em>
-<a class="jxr_linenumber" name="187" href="#187">187</a>             }
-<a class="jxr_linenumber" name="188" href="#188">188</a>         }
-<a class="jxr_linenumber" name="189" href="#189">189</a> 
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String tsoHostAndPort;
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/LeaseManagement.html">LeaseManagement</a> leaseManager;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/ReplyProcessor.html">ReplyProcessor</a> replyProcessor;
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/RetryProcessor.html">RetryProcessor</a> retryProcessor;
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> CommitTable.Writer writer;
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/tso/Panicker.html">Panicker</a> panicker;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Timer.html">Timer</a> flushTimer;
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Histogram.html">Histogram</a> batchSizeHistogram;
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/metrics/Histogram.html">Histogram</a> flushedCommitEventsHistogram;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>      @Inject
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <a href="../../../../org/apache/omid/tso/PersistenceProcessorHandler.html">PersistenceProcessorHandler</a>(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics,
+<a class="jxr_linenumber" name="54" href="#54">54</a>                                  String tsoHostAndPort,
+<a class="jxr_linenumber" name="55" href="#55">55</a>                                  <a href="../../../../org/apache/omid/tso/LeaseManagement.html">LeaseManagement</a> leaseManager,
+<a class="jxr_linenumber" name="56" href="#56">56</a>                                  <a href="../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> commitTable,
+<a class="jxr_linenumber" name="57" href="#57">57</a>                                  <a href="../../../../org/apache/omid/tso/ReplyProcessor.html">ReplyProcessor</a> replyProcessor,
+<a class="jxr_linenumber" name="58" href="#58">58</a>                                  <a href="../../../../org/apache/omid/tso/RetryProcessor.html">RetryProcessor</a> retryProcessor,
+<a class="jxr_linenumber" name="59" href="#59">59</a>                                  <a href="../../../../org/apache/omid/tso/Panicker.html">Panicker</a> panicker)
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">throws</strong> InterruptedException, ExecutionException, IOException {
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>          <strong class="jxr_keyword">this</strong>.tsoHostAndPort = tsoHostAndPort;
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">this</strong>.leaseManager = leaseManager;
+<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">this</strong>.writer = commitTable.getWriter();
+<a class="jxr_linenumber" name="65" href="#65">65</a>          <strong class="jxr_keyword">this</strong>.replyProcessor = replyProcessor;
+<a class="jxr_linenumber" name="66" href="#66">66</a>          <strong class="jxr_keyword">this</strong>.retryProcessor = retryProcessor;
+<a class="jxr_linenumber" name="67" href="#67">67</a>          <strong class="jxr_keyword">this</strong>.panicker = panicker;
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>          <em class="jxr_comment">// Metrics in this component</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>          flushTimer = metrics.timer(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"persist"</span>, <span class="jxr_string">"flush"</span>, <span class="jxr_string">"latency"</span>));
+<a class="jxr_linenumber" name="71" href="#71">71</a>          flushedCommitEventsHistogram = metrics.histogram(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"persist"</span>, <span class="jxr_string">"flushed"</span>, <span class="jxr_string">"commits"</span>, <span class="jxr_string">"size"</span>));
+<a class="jxr_linenumber" name="72" href="#72">72</a>          batchSizeHistogram = metrics.histogram(name(<span class="jxr_string">"tso"</span>, <span class="jxr_string">"persist"</span>, <span class="jxr_string">"batch"</span>, <span class="jxr_string">"size"</span>));
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>      }
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>      @Override
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onEvent(PersistenceProcessorImpl.PersistBatchEvent batchEvent) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="78" href="#78">78</a>  
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">int</strong> commitEventsToFlush = 0;
+<a class="jxr_linenumber" name="80" href="#80">80</a>          <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch = batchEvent.getBatch();
+<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">int</strong> numOfBatchedEvents = batch.getNumEvents();
+<a class="jxr_linenumber" name="82" href="#82">82</a>          batchSizeHistogram.update(numOfBatchedEvents);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i &lt; numOfBatchedEvents; i++) {
+<a class="jxr_linenumber" name="84" href="#84">84</a>              <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> event = batch.get(i);
+<a class="jxr_linenumber" name="85" href="#85">85</a>              <strong class="jxr_keyword">switch</strong> (event.getType()) {
+<a class="jxr_linenumber" name="86" href="#86">86</a>                  <strong class="jxr_keyword">case</strong> TIMESTAMP:
+<a class="jxr_linenumber" name="87" href="#87">87</a>                      event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.timestamp.latency"</span>);
+<a class="jxr_linenumber" name="88" href="#88">88</a>                      <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="89" href="#89">89</a>                  <strong class="jxr_keyword">case</strong> COMMIT:
+<a class="jxr_linenumber" name="90" href="#90">90</a>                      writer.addCommittedTransaction(event.getStartTimestamp(), event.getCommitTimestamp());
+<a class="jxr_linenumber" name="91" href="#91">91</a>                      commitEventsToFlush++;
+<a class="jxr_linenumber" name="92" href="#92">92</a>                      <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="93" href="#93">93</a>                  <strong class="jxr_keyword">case</strong> COMMIT_RETRY:
+<a class="jxr_linenumber" name="94" href="#94">94</a>                      event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.commit-retry.latency"</span>);
+<a class="jxr_linenumber" name="95" href="#95">95</a>                      <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="96" href="#96">96</a>                  <strong class="jxr_keyword">case</strong> ABORT:
+<a class="jxr_linenumber" name="97" href="#97">97</a>                      event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.abort.latency"</span>);
+<a class="jxr_linenumber" name="98" href="#98">98</a>                      <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="99" href="#99">99</a>                  <strong class="jxr_keyword">case</strong> FENCE:
+<a class="jxr_linenumber" name="100" href="#100">100</a>                     <em class="jxr_comment">// Persist the fence by using the fence identifier as both the start and commit timestamp.</em>
+<a class="jxr_linenumber" name="101" href="#101">101</a>                     writer.addCommittedTransaction(event.getCommitTimestamp(), event.getCommitTimestamp());
+<a class="jxr_linenumber" name="102" href="#102">102</a>                     commitEventsToFlush++;
+<a class="jxr_linenumber" name="103" href="#103">103</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="104" href="#104">104</a>                 <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="105" href="#105">105</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Event not allowed in Persistent Processor Handler: "</span> + event);
+<a class="jxr_linenumber" name="106" href="#106">106</a>             }
+<a class="jxr_linenumber" name="107" href="#107">107</a>         }
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <em class="jxr_comment">// Flush and send the responses back to the client. WARNING: Before sending the responses, first we need</em>
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <em class="jxr_comment">// to filter commit retries in the batch to disambiguate them.</em>
+<a class="jxr_linenumber" name="111" href="#111">111</a>         flush(commitEventsToFlush);
+<a class="jxr_linenumber" name="112" href="#112">112</a>         filterAndDissambiguateClientRetries(batch);
+<a class="jxr_linenumber" name="113" href="#113">113</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i &lt; batch.getNumEvents(); i++) { <em class="jxr_comment">// Just for statistics</em>
+<a class="jxr_linenumber" name="114" href="#114">114</a>             <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> event = batch.get(i);
+<a class="jxr_linenumber" name="115" href="#115">115</a>             <strong class="jxr_keyword">switch</strong> (event.getType()) {
+<a class="jxr_linenumber" name="116" href="#116">116</a>                 <strong class="jxr_keyword">case</strong> TIMESTAMP:
+<a class="jxr_linenumber" name="117" href="#117">117</a>                     event.getMonCtx().timerStart(<span class="jxr_string">"reply.processor.timestamp.latency"</span>);
+<a class="jxr_linenumber" name="118" href="#118">118</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="119" href="#119">119</a>                 <strong class="jxr_keyword">case</strong> COMMIT:
+<a class="jxr_linenumber" name="120" href="#120">120</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.commit.latency"</span>);
+<a class="jxr_linenumber" name="121" href="#121">121</a>                     event.getMonCtx().timerStart(<span class="jxr_string">"reply.processor.commit.latency"</span>);
+<a class="jxr_linenumber" name="122" href="#122">122</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="123" href="#123">123</a>                 <strong class="jxr_keyword">case</strong> COMMIT_RETRY:
+<a class="jxr_linenumber" name="124" href="#124">124</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"COMMIT_RETRY events must be filtered before this step: "</span> + event);
+<a class="jxr_linenumber" name="125" href="#125">125</a>                 <strong class="jxr_keyword">case</strong> ABORT:
+<a class="jxr_linenumber" name="126" href="#126">126</a>                     event.getMonCtx().timerStart(<span class="jxr_string">"reply.processor.abort.latency"</span>);
+<a class="jxr_linenumber" name="127" href="#127">127</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="128" href="#128">128</a>                 <strong class="jxr_keyword">case</strong> FENCE:
+<a class="jxr_linenumber" name="129" href="#129">129</a>                     event.getMonCtx().timerStop(<span class="jxr_string">"persistence.processor.fence.latency"</span>);
+<a class="jxr_linenumber" name="130" href="#130">130</a>                     event.getMonCtx().timerStart(<span class="jxr_string">"reply.processor.fence.latency"</span>);
+<a class="jxr_linenumber" name="131" href="#131">131</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="132" href="#132">132</a>                 <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="133" href="#133">133</a>                     <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Event not allowed in Persistent Processor Handler: "</span> + event);
+<a class="jxr_linenumber" name="134" href="#134">134</a>             }
+<a class="jxr_linenumber" name="135" href="#135">135</a>         }
+<a class="jxr_linenumber" name="136" href="#136">136</a>         replyProcessor.manageResponsesBatch(batchEvent.getBatchSequence(), batch);
+<a class="jxr_linenumber" name="137" href="#137">137</a> 
+<a class="jxr_linenumber" name="138" href="#138">138</a>     }
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">void</strong> flush(<strong class="jxr_keyword">int</strong> commitEventsToFlush) {
+<a class="jxr_linenumber" name="141" href="#141">141</a> 
+<a class="jxr_linenumber" name="142" href="#142">142</a>         commitSuicideIfNotMaster();
+<a class="jxr_linenumber" name="143" href="#143">143</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="144" href="#144">144</a>             <strong class="jxr_keyword">long</strong> startFlushTimeInNs = System.nanoTime();
+<a class="jxr_linenumber" name="145" href="#145">145</a>             <strong class="jxr_keyword">if</strong>(commitEventsToFlush &gt; 0) {
+<a class="jxr_linenumber" name="146" href="#146">146</a>                 writer.flush();
+<a class="jxr_linenumber" name="147" href="#147">147</a>             }
+<a class="jxr_linenumber" name="148" href="#148">148</a>             flushTimer.update(System.nanoTime() - startFlushTimeInNs);
+<a class="jxr_linenumber" name="149" href="#149">149</a>             flushedCommitEventsHistogram.update(commitEventsToFlush);
+<a class="jxr_linenumber" name="150" href="#150">150</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="151" href="#151">151</a>             panicker.panic(<span class="jxr_string">"Error persisting commit batch"</span>, e);
+<a class="jxr_linenumber" name="152" href="#152">152</a>         }
+<a class="jxr_linenumber" name="153" href="#153">153</a>         commitSuicideIfNotMaster();
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>     }
+<a class="jxr_linenumber" name="156" href="#156">156</a> 
+<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> commitSuicideIfNotMaster() {
+<a class="jxr_linenumber" name="158" href="#158">158</a>         <strong class="jxr_keyword">if</strong> (!leaseManager.stillInLeasePeriod()) {
+<a class="jxr_linenumber" name="159" href="#159">159</a>             panicker.panic(<span class="jxr_string">"Replica "</span> + tsoHostAndPort + <span class="jxr_string">" lost mastership whilst flushing data. Committing suicide"</span>);
+<a class="jxr_linenumber" name="160" href="#160">160</a>         }
+<a class="jxr_linenumber" name="161" href="#161">161</a>     }
+<a class="jxr_linenumber" name="162" href="#162">162</a> 
+<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">void</strong> filterAndDissambiguateClientRetries(<a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch) {
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">int</strong> currentEventIdx = 0;
+<a class="jxr_linenumber" name="166" href="#166">166</a>         <strong class="jxr_keyword">while</strong> (currentEventIdx &lt;= batch.getLastEventIdx()) {
+<a class="jxr_linenumber" name="167" href="#167">167</a>             <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> event = batch.get(currentEventIdx);
+<a class="jxr_linenumber" name="168" href="#168">168</a>             <strong class="jxr_keyword">if</strong> (event.getType() == COMMIT_RETRY) {
+<a class="jxr_linenumber" name="169" href="#169">169</a>                 retryProcessor.disambiguateRetryRequestHeuristically(event.getStartTimestamp(), event.getChannel(), event.getMonCtx());
+<a class="jxr_linenumber" name="170" href="#170">170</a>                 <em class="jxr_comment">// Swap the disambiguated event with the last batch event &amp; decrease the # of remaining elems to process</em>
+<a class="jxr_linenumber" name="171" href="#171">171</a>                 swapBatchElements(batch, currentEventIdx, batch.getLastEventIdx());
+<a class="jxr_linenumber" name="172" href="#172">172</a>                 batch.decreaseNumEvents();
+<a class="jxr_linenumber" name="173" href="#173">173</a>                 <strong class="jxr_keyword">if</strong> (batch.isEmpty()) {
+<a class="jxr_linenumber" name="174" href="#174">174</a>                     <strong class="jxr_keyword">break</strong>; <em class="jxr_comment">// We're OK to call now the reply processor</em>
+<a class="jxr_linenumber" name="175" href="#175">175</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="176" href="#176">176</a>                     <strong class="jxr_keyword">continue</strong>; <em class="jxr_comment">// Otherwise we continue checking for retries from the new event in the current position</em>
+<a class="jxr_linenumber" name="177" href="#177">177</a>                 }
+<a class="jxr_linenumber" name="178" href="#178">178</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="179" href="#179">179</a>                 currentEventIdx++; <em class="jxr_comment">// Let's check if the next event was a retry</em>
+<a class="jxr_linenumber" name="180" href="#180">180</a>             }
+<a class="jxr_linenumber" name="181" href="#181">181</a>         }
+<a class="jxr_linenumber" name="182" href="#182">182</a> 
+<a class="jxr_linenumber" name="183" href="#183">183</a>     }
+<a class="jxr_linenumber" name="184" href="#184">184</a> 
+<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> swapBatchElements(<a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch, <strong class="jxr_keyword">int</strong> firstIdx, <strong class="jxr_keyword">int</strong> lastIdx) {
+<a class="jxr_linenumber" name="186" href="#186">186</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> tmpEvent = batch.get(firstIdx);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> lastEventInBatch = batch.get(lastIdx);
+<a class="jxr_linenumber" name="188" href="#188">188</a>         batch.set(firstIdx, lastEventInBatch);
+<a class="jxr_linenumber" name="189" href="#189">189</a>         batch.set(lastIdx, tmpEvent);
 <a class="jxr_linenumber" name="190" href="#190">190</a>     }
 <a class="jxr_linenumber" name="191" href="#191">191</a> 
-<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> swapBatchElements(<a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch, <strong class="jxr_keyword">int</strong> firstIdx, <strong class="jxr_keyword">int</strong> lastIdx) {
-<a class="jxr_linenumber" name="193" href="#193">193</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> tmpEvent = batch.get(firstIdx);
-<a class="jxr_linenumber" name="194" href="#194">194</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> lastEventInBatch = batch.get(lastIdx);
-<a class="jxr_linenumber" name="195" href="#195">195</a>         batch.set(firstIdx, lastEventInBatch);
-<a class="jxr_linenumber" name="196" href="#196">196</a>         batch.set(lastIdx, tmpEvent);
-<a class="jxr_linenumber" name="197" href="#197">197</a>     }
-<a class="jxr_linenumber" name="198" href="#198">198</a> 
-<a class="jxr_linenumber" name="199" href="#199">199</a>     @Override
-<a class="jxr_linenumber" name="200" href="#200">200</a>     <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="201" href="#201">201</a> 
-<a class="jxr_linenumber" name="202" href="#202">202</a>         <strong class="jxr_keyword">return</strong> Objects.toStringHelper(<strong class="jxr_keyword">this</strong>).add(<span class="jxr_string">"id"</span>, id).toString();
-<a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>     }
-<a class="jxr_linenumber" name="205" href="#205">205</a> 
-<a class="jxr_linenumber" name="206" href="#206">206</a> }
+<a class="jxr_linenumber" name="192" href="#192">192</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/PersistenceProcessorImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/PersistenceProcessorImpl.html b/xref/org/apache/omid/tso/PersistenceProcessorImpl.html
index 4b614e7..c1a62f9 100644
--- a/xref/org/apache/omid/tso/PersistenceProcessorImpl.html
+++ b/xref/org/apache/omid/tso/PersistenceProcessorImpl.html
@@ -156,10 +156,10 @@
 <a class="jxr_linenumber" name="146" href="#146">146</a>     }
 <a class="jxr_linenumber" name="147" href="#147">147</a> 
 <a class="jxr_linenumber" name="148" href="#148">148</a>     @Override
-<a class="jxr_linenumber" name="149" href="#149">149</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addAbortToBatch(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context)
+<a class="jxr_linenumber" name="149" href="#149">149</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addAbortToBatch(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx)
 <a class="jxr_linenumber" name="150" href="#150">150</a>             <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="151" href="#151">151</a> 
-<a class="jxr_linenumber" name="152" href="#152">152</a>         currentBatch.addAbort(startTimestamp, c, context);
+<a class="jxr_linenumber" name="152" href="#152">152</a>         currentBatch.addAbort(startTimestamp, c, monCtx);
 <a class="jxr_linenumber" name="153" href="#153">153</a>         <strong class="jxr_keyword">if</strong> (currentBatch.isFull()) {
 <a class="jxr_linenumber" name="154" href="#154">154</a>             triggerCurrentBatchFlush();
 <a class="jxr_linenumber" name="155" href="#155">155</a>         }
@@ -167,9 +167,9 @@
 <a class="jxr_linenumber" name="157" href="#157">157</a>     }
 <a class="jxr_linenumber" name="158" href="#158">158</a> 
 <a class="jxr_linenumber" name="159" href="#159">159</a>     @Override
-<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addTimestampToBatch(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addTimestampToBatch(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>         currentBatch.addTimestamp(startTimestamp, c, context);
+<a class="jxr_linenumber" name="162" href="#162">162</a>         currentBatch.addTimestamp(startTimestamp, c, monCtx);
 <a class="jxr_linenumber" name="163" href="#163">163</a>         <strong class="jxr_keyword">if</strong> (currentBatch.isFull()) {
 <a class="jxr_linenumber" name="164" href="#164">164</a>             triggerCurrentBatchFlush();
 <a class="jxr_linenumber" name="165" href="#165">165</a>         }
@@ -177,78 +177,88 @@
 <a class="jxr_linenumber" name="167" href="#167">167</a>     }
 <a class="jxr_linenumber" name="168" href="#168">168</a> 
 <a class="jxr_linenumber" name="169" href="#169">169</a>     @Override
-<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">public</strong> Future&lt;Void&gt; persistLowWatermark(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> lowWatermark) {
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addFenceToBatch(<strong class="jxr_keyword">long</strong> tableID, <strong class="jxr_keyword">long</strong> fenceTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>         <strong class="jxr_keyword">return</strong> lowWatermarkWriterExecutor.submit(<strong class="jxr_keyword">new</strong> Callable&lt;Void&gt;() {
-<a class="jxr_linenumber" name="173" href="#173">173</a>             @Override
-<a class="jxr_linenumber" name="174" href="#174">174</a>             <strong class="jxr_keyword">public</strong> Void call() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="175" href="#175">175</a>                 <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="176" href="#176">176</a>                     lwmWriteTimer.start();
-<a class="jxr_linenumber" name="177" href="#177">177</a>                     lowWatermarkWriter.updateLowWatermark(lowWatermark);
-<a class="jxr_linenumber" name="178" href="#178">178</a>                     lowWatermarkWriter.flush();
-<a class="jxr_linenumber" name="179" href="#179">179</a>                 } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="180" href="#180">180</a>                     lwmWriteTimer.stop();
-<a class="jxr_linenumber" name="181" href="#181">181</a>                 }
-<a class="jxr_linenumber" name="182" href="#182">182</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="183" href="#183">183</a>             }
-<a class="jxr_linenumber" name="184" href="#184">184</a>         });
-<a class="jxr_linenumber" name="185" href="#185">185</a> 
-<a class="jxr_linenumber" name="186" href="#186">186</a>     }
-<a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>     @Override
-<a class="jxr_linenumber" name="189" href="#189">189</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="190" href="#190">190</a> 
-<a class="jxr_linenumber" name="191" href="#191">191</a>         LOG.info(<span class="jxr_string">"Terminating Persistence Processor..."</span>);
-<a class="jxr_linenumber" name="192" href="#192">192</a>         disruptor.halt();
-<a class="jxr_linenumber" name="193" href="#193">193</a>         disruptor.shutdown();
-<a class="jxr_linenumber" name="194" href="#194">194</a>         LOG.info(<span class="jxr_string">"\tPersistence Processor Disruptor shutdown"</span>);
-<a class="jxr_linenumber" name="195" href="#195">195</a>         disruptorExec.shutdownNow();
-<a class="jxr_linenumber" name="196" href="#196">196</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="197" href="#197">197</a>             disruptorExec.awaitTermination(3, SECONDS);
-<a class="jxr_linenumber" name="198" href="#198">198</a>             LOG.info(<span class="jxr_string">"\tPersistence Processor Disruptor executor shutdown"</span>);
-<a class="jxr_linenumber" name="199" href="#199">199</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
-<a class="jxr_linenumber" name="200" href="#200">200</a>             LOG.error(<span class="jxr_string">"Interrupted whilst finishing Persistence Processor Disruptor executor"</span>);
-<a class="jxr_linenumber" name="201" href="#201">201</a>             Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="202" href="#202">202</a>         }
-<a class="jxr_linenumber" name="203" href="#203">203</a>         LOG.info(<span class="jxr_string">"Persistence Processor terminated"</span>);
-<a class="jxr_linenumber" name="204" href="#204">204</a> 
-<a class="jxr_linenumber" name="205" href="#205">205</a>     }
-<a class="jxr_linenumber" name="206" href="#206">206</a> 
-<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessorImpl.html">PersistBatchEvent</a> {
-<a class="jxr_linenumber" name="208" href="#208">208</a> 
-<a class="jxr_linenumber" name="209" href="#209">209</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> batchSequence;
-<a class="jxr_linenumber" name="210" href="#210">210</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch;
-<a class="jxr_linenumber" name="211" href="#211">211</a> 
-<a class="jxr_linenumber" name="212" href="#212">212</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makePersistBatch(<a href="../../../../org/apache/omid/tso/PersistenceProcessorImpl.html">PersistBatchEvent</a> e, <strong class="jxr_keyword">long</strong> batchSequence, <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch) {
-<a class="jxr_linenumber" name="213" href="#213">213</a>             e.batch = batch;
-<a class="jxr_linenumber" name="214" href="#214">214</a>             e.batchSequence = batchSequence;
-<a class="jxr_linenumber" name="215" href="#215">215</a>         }
+<a class="jxr_linenumber" name="172" href="#172">172</a>         currentBatch.addFence(tableID, fenceTimestamp, c, monCtx);
+<a class="jxr_linenumber" name="173" href="#173">173</a>         <strong class="jxr_keyword">if</strong> (currentBatch.isFull()) {
+<a class="jxr_linenumber" name="174" href="#174">174</a>             triggerCurrentBatchFlush();
+<a class="jxr_linenumber" name="175" href="#175">175</a>         }
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>     }
+<a class="jxr_linenumber" name="178" href="#178">178</a> 
+<a class="jxr_linenumber" name="179" href="#179">179</a>     @Override
+<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">public</strong> Future&lt;Void&gt; persistLowWatermark(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> lowWatermark) {
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>         <strong class="jxr_keyword">return</strong> lowWatermarkWriterExecutor.submit(<strong class="jxr_keyword">new</strong> Callable&lt;Void&gt;() {
+<a class="jxr_linenumber" name="183" href="#183">183</a>             @Override
+<a class="jxr_linenumber" name="184" href="#184">184</a>             <strong class="jxr_keyword">public</strong> Void call() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="185" href="#185">185</a>                 <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="186" href="#186">186</a>                     lwmWriteTimer.start();
+<a class="jxr_linenumber" name="187" href="#187">187</a>                     lowWatermarkWriter.updateLowWatermark(lowWatermark);
+<a class="jxr_linenumber" name="188" href="#188">188</a>                     lowWatermarkWriter.flush();
+<a class="jxr_linenumber" name="189" href="#189">189</a>                 } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="190" href="#190">190</a>                     lwmWriteTimer.stop();
+<a class="jxr_linenumber" name="191" href="#191">191</a>                 }
+<a class="jxr_linenumber" name="192" href="#192">192</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="193" href="#193">193</a>             }
+<a class="jxr_linenumber" name="194" href="#194">194</a>         });
+<a class="jxr_linenumber" name="195" href="#195">195</a> 
+<a class="jxr_linenumber" name="196" href="#196">196</a>     }
+<a class="jxr_linenumber" name="197" href="#197">197</a> 
+<a class="jxr_linenumber" name="198" href="#198">198</a>     @Override
+<a class="jxr_linenumber" name="199" href="#199">199</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="200" href="#200">200</a> 
+<a class="jxr_linenumber" name="201" href="#201">201</a>         LOG.info(<span class="jxr_string">"Terminating Persistence Processor..."</span>);
+<a class="jxr_linenumber" name="202" href="#202">202</a>         disruptor.halt();
+<a class="jxr_linenumber" name="203" href="#203">203</a>         disruptor.shutdown();
+<a class="jxr_linenumber" name="204" href="#204">204</a>         LOG.info(<span class="jxr_string">"\tPersistence Processor Disruptor shutdown"</span>);
+<a class="jxr_linenumber" name="205" href="#205">205</a>         disruptorExec.shutdownNow();
+<a class="jxr_linenumber" name="206" href="#206">206</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="207" href="#207">207</a>             disruptorExec.awaitTermination(3, SECONDS);
+<a class="jxr_linenumber" name="208" href="#208">208</a>             LOG.info(<span class="jxr_string">"\tPersistence Processor Disruptor executor shutdown"</span>);
+<a class="jxr_linenumber" name="209" href="#209">209</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
+<a class="jxr_linenumber" name="210" href="#210">210</a>             LOG.error(<span class="jxr_string">"Interrupted whilst finishing Persistence Processor Disruptor executor"</span>);
+<a class="jxr_linenumber" name="211" href="#211">211</a>             Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="212" href="#212">212</a>         }
+<a class="jxr_linenumber" name="213" href="#213">213</a>         LOG.info(<span class="jxr_string">"Persistence Processor terminated"</span>);
+<a class="jxr_linenumber" name="214" href="#214">214</a> 
+<a class="jxr_linenumber" name="215" href="#215">215</a>     }
 <a class="jxr_linenumber" name="216" href="#216">216</a> 
-<a class="jxr_linenumber" name="217" href="#217">217</a>         <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> getBatch() {
-<a class="jxr_linenumber" name="218" href="#218">218</a>             <strong class="jxr_keyword">return</strong> batch;
-<a class="jxr_linenumber" name="219" href="#219">219</a>         }
-<a class="jxr_linenumber" name="220" href="#220">220</a> 
-<a class="jxr_linenumber" name="221" href="#221">221</a>         <strong class="jxr_keyword">long</strong> getBatchSequence() {
-<a class="jxr_linenumber" name="222" href="#222">222</a>             <strong class="jxr_keyword">return</strong> batchSequence;
-<a class="jxr_linenumber" name="223" href="#223">223</a>         }
-<a class="jxr_linenumber" name="224" href="#224">224</a> 
-<a class="jxr_linenumber" name="225" href="#225">225</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> EventFactory&lt;PersistBatchEvent&gt; EVENT_FACTORY = <strong class="jxr_keyword">new</strong> EventFactory&lt;PersistBatchEvent&gt;() {
-<a class="jxr_linenumber" name="226" href="#226">226</a>             <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessorImpl.html">PersistBatchEvent</a> newInstance() {
-<a class="jxr_linenumber" name="227" href="#227">227</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessorImpl.html">PersistBatchEvent</a>();
-<a class="jxr_linenumber" name="228" href="#228">228</a>             }
-<a class="jxr_linenumber" name="229" href="#229">229</a>         };
+<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessorImpl.html">PersistBatchEvent</a> {
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> batchSequence;
+<a class="jxr_linenumber" name="220" href="#220">220</a>         <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch;
+<a class="jxr_linenumber" name="221" href="#221">221</a> 
+<a class="jxr_linenumber" name="222" href="#222">222</a>         <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> makePersistBatch(<a href="../../../../org/apache/omid/tso/PersistenceProcessorImpl.html">PersistBatchEvent</a> e, <strong class="jxr_keyword">long</strong> batchSequence, <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch) {
+<a class="jxr_linenumber" name="223" href="#223">223</a>             e.batch = batch;
+<a class="jxr_linenumber" name="224" href="#224">224</a>             e.batchSequence = batchSequence;
+<a class="jxr_linenumber" name="225" href="#225">225</a>         }
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>         <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> getBatch() {
+<a class="jxr_linenumber" name="228" href="#228">228</a>             <strong class="jxr_keyword">return</strong> batch;
+<a class="jxr_linenumber" name="229" href="#229">229</a>         }
 <a class="jxr_linenumber" name="230" href="#230">230</a> 
-<a class="jxr_linenumber" name="231" href="#231">231</a>         @Override
-<a class="jxr_linenumber" name="232" href="#232">232</a>         <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="233" href="#233">233</a>             <strong class="jxr_keyword">return</strong> Objects.toStringHelper(<strong class="jxr_keyword">this</strong>)
-<a class="jxr_linenumber" name="234" href="#234">234</a>                     .add(<span class="jxr_string">"batchSequence"</span>, batchSequence)
-<a class="jxr_linenumber" name="235" href="#235">235</a>                     .add(<span class="jxr_string">"batch"</span>, batch)
-<a class="jxr_linenumber" name="236" href="#236">236</a>                     .toString();
-<a class="jxr_linenumber" name="237" href="#237">237</a>         }
-<a class="jxr_linenumber" name="238" href="#238">238</a> 
-<a class="jxr_linenumber" name="239" href="#239">239</a>     }
+<a class="jxr_linenumber" name="231" href="#231">231</a>         <strong class="jxr_keyword">long</strong> getBatchSequence() {
+<a class="jxr_linenumber" name="232" href="#232">232</a>             <strong class="jxr_keyword">return</strong> batchSequence;
+<a class="jxr_linenumber" name="233" href="#233">233</a>         }
+<a class="jxr_linenumber" name="234" href="#234">234</a> 
+<a class="jxr_linenumber" name="235" href="#235">235</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> EventFactory&lt;PersistBatchEvent&gt; EVENT_FACTORY = <strong class="jxr_keyword">new</strong> EventFactory&lt;PersistBatchEvent&gt;() {
+<a class="jxr_linenumber" name="236" href="#236">236</a>             <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessorImpl.html">PersistBatchEvent</a> newInstance() {
+<a class="jxr_linenumber" name="237" href="#237">237</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/PersistenceProcessorImpl.html">PersistBatchEvent</a>();
+<a class="jxr_linenumber" name="238" href="#238">238</a>             }
+<a class="jxr_linenumber" name="239" href="#239">239</a>         };
 <a class="jxr_linenumber" name="240" href="#240">240</a> 
-<a class="jxr_linenumber" name="241" href="#241">241</a> }
+<a class="jxr_linenumber" name="241" href="#241">241</a>         @Override
+<a class="jxr_linenumber" name="242" href="#242">242</a>         <strong class="jxr_keyword">public</strong> String toString() {
+<a class="jxr_linenumber" name="243" href="#243">243</a>             <strong class="jxr_keyword">return</strong> Objects.toStringHelper(<strong class="jxr_keyword">this</strong>)
+<a class="jxr_linenumber" name="244" href="#244">244</a>                     .add(<span class="jxr_string">"batchSequence"</span>, batchSequence)
+<a class="jxr_linenumber" name="245" href="#245">245</a>                     .add(<span class="jxr_string">"batch"</span>, batch)
+<a class="jxr_linenumber" name="246" href="#246">246</a>                     .toString();
+<a class="jxr_linenumber" name="247" href="#247">247</a>         }
+<a class="jxr_linenumber" name="248" href="#248">248</a> 
+<a class="jxr_linenumber" name="249" href="#249">249</a>     }
+<a class="jxr_linenumber" name="250" href="#250">250</a> 
+<a class="jxr_linenumber" name="251" href="#251">251</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/ReplyProcessor.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/ReplyProcessor.html b/xref/org/apache/omid/tso/ReplyProcessor.html
index 937cb49..6b4b083 100644
--- a/xref/org/apache/omid/tso/ReplyProcessor.html
+++ b/xref/org/apache/omid/tso/ReplyProcessor.html
@@ -77,8 +77,21 @@
 <a class="jxr_linenumber" name="67" href="#67">67</a>  
 <a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">void</strong> sendTimestampResponse(<strong class="jxr_keyword">long</strong> startTimestamp, Channel channel);
 <a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>  }
-<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     * Allow to send a fence response back to the client.</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     * @param tableID</em>
+<a class="jxr_linenumber" name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     *            the table we are creating the fence for</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>  <em class="jxr_javadoccomment">     * @param fenceTimestamp</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>  <em class="jxr_javadoccomment">     *            the fence timestamp to return</em>
+<a class="jxr_linenumber" name="77" href="#77">77</a>  <em class="jxr_javadoccomment">     * @param channel</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>  <em class="jxr_javadoccomment">     *            the channel used to send the response back to the client</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">void</strong> sendFenceResponse(<strong class="jxr_keyword">long</strong> tableID, <strong class="jxr_keyword">long</strong> fenceTimestamp, Channel c);
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>  }
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[24/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/client/TestIntegrationOfTSOClientServerBasicFunctionality.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/client/TestIntegrationOfTSOClientServerBasicFunctionality.html b/xref-test/org/apache/omid/tso/client/TestIntegrationOfTSOClientServerBasicFunctionality.html
index e9ef446..3836cf0 100644
--- a/xref-test/org/apache/omid/tso/client/TestIntegrationOfTSOClientServerBasicFunctionality.html
+++ b/xref-test/org/apache/omid/tso/client/TestIntegrationOfTSOClientServerBasicFunctionality.html
@@ -31,216 +31,266 @@
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
 <a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
 <a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Module;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.util.DummyCellIdImpl;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.testng.Assert;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterClass;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNotNull;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestIntegrationOfTSOClientServerBasicFunctionality.html">TestIntegrationOfTSOClientServerBasicFunctionality</a> {
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.AbstractTransactionManager;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.util.DummyCellIdImpl;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.testng.Assert;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterClass;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNotNull;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
 <a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestIntegrationOfTSOClientServerBasicFunctionality.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestIntegrationOfTSOClientServerBasicFunctionality.html">TestIntegrationOfTSOClientServerBasicFunctionality</a> {
 <a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> tsoServerPortForTest;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <em class="jxr_comment">// Cells for tests</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL);
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xfeedcafeL);
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <em class="jxr_comment">// Required infrastructure for TSO tsoClient-server integration testing</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> TSOServer tsoServer;
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> TSOClient tsoClient;
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> TSOClient justAnotherTSOClient;
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> CommitTable.Client commitTableClient;
-<a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>      @BeforeClass
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setup() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="65" href="#65">65</a>  
-<a class="jxr_linenumber" name="66" href="#66">66</a>          tsoServerPortForTest = TestUtils.getFreeLocalPort();
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestIntegrationOfTSOClientServerBasicFunctionality.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> tsoServerPortForTest;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <em class="jxr_comment">// Cells for tests</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL);
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xfeedcafeL);
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <em class="jxr_comment">// Required infrastructure for TSO tsoClient-server integration testing</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> TSOServer tsoServer;
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> TSOClient tsoClient;
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> TSOClient justAnotherTSOClient;
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> CommitTable.Client commitTableClient;
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>      @BeforeClass
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setup() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="67" href="#67">67</a>  
-<a class="jxr_linenumber" name="68" href="#68">68</a>          TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="69" href="#69">69</a>          tsoConfig.setConflictMapSize(1000);
-<a class="jxr_linenumber" name="70" href="#70">70</a>          tsoConfig.setPort(tsoServerPortForTest);
-<a class="jxr_linenumber" name="71" href="#71">71</a>          Module tsoServerMockModule = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig);
-<a class="jxr_linenumber" name="72" href="#72">72</a>          Injector injector = Guice.createInjector(tsoServerMockModule);
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>          CommitTable commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="75" href="#75">75</a>          commitTableClient = commitTable.getClient();
-<a class="jxr_linenumber" name="76" href="#76">76</a>  
-<a class="jxr_linenumber" name="77" href="#77">77</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="78" href="#78">78</a>          LOG.info(<span class="jxr_string">"======================================= Init TSO Server =========================================="</span>);
+<a class="jxr_linenumber" name="68" href="#68">68</a>          tsoServerPortForTest = TestUtils.getFreeLocalPort();
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>          TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="71" href="#71">71</a>          tsoConfig.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="72" href="#72">72</a>          tsoConfig.setPort(tsoServerPortForTest);
+<a class="jxr_linenumber" name="73" href="#73">73</a>          Module tsoServerMockModule = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig);
+<a class="jxr_linenumber" name="74" href="#74">74</a>          Injector injector = Guice.createInjector(tsoServerMockModule);
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>          CommitTable commitTable = injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          commitTableClient = commitTable.getClient();
+<a class="jxr_linenumber" name="78" href="#78">78</a>  
 <a class="jxr_linenumber" name="79" href="#79">79</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>          tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="82" href="#82">82</a>          tsoServer.startAndWait();
-<a class="jxr_linenumber" name="83" href="#83">83</a>          TestUtils.waitForSocketListening(TSO_SERVER_HOST, tsoServerPortForTest, 100);
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="86" href="#86">86</a>          LOG.info(<span class="jxr_string">"===================================== TSO Server Initialized ====================================="</span>);
+<a class="jxr_linenumber" name="80" href="#80">80</a>          LOG.info(<span class="jxr_string">"======================================= Init TSO Server =========================================="</span>);
+<a class="jxr_linenumber" name="81" href="#81">81</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>          tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="84" href="#84">84</a>          tsoServer.startAndWait();
+<a class="jxr_linenumber" name="85" href="#85">85</a>          TestUtils.waitForSocketListening(TSO_SERVER_HOST, tsoServerPortForTest, 100);
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
 <a class="jxr_linenumber" name="87" href="#87">87</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>          LOG.info(<span class="jxr_string">"===================================== TSO Server Initialized ====================================="</span>);
 <a class="jxr_linenumber" name="89" href="#89">89</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="90" href="#90">90</a>          LOG.info(<span class="jxr_string">"======================================= Setup TSO Clients ========================================"</span>);
+<a class="jxr_linenumber" name="90" href="#90">90</a>  
 <a class="jxr_linenumber" name="91" href="#91">91</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="92" href="#92">92</a>  
-<a class="jxr_linenumber" name="93" href="#93">93</a>          <em class="jxr_comment">// Configure direct connection to the server</em>
-<a class="jxr_linenumber" name="94" href="#94">94</a>          OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="95" href="#95">95</a>          tsoClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + tsoServerPortForTest);
-<a class="jxr_linenumber" name="96" href="#96">96</a>  
-<a class="jxr_linenumber" name="97" href="#97">97</a>          tsoClient = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="98" href="#98">98</a>          justAnotherTSOClient = TSOClient.newInstance(tsoClientConf);
-<a class="jxr_linenumber" name="99" href="#99">99</a>  
-<a class="jxr_linenumber" name="100" href="#100">100</a>         LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="101" href="#101">101</a>         LOG.info(<span class="jxr_string">"===================================== TSO Clients Initialized ===================================="</span>);
+<a class="jxr_linenumber" name="92" href="#92">92</a>          LOG.info(<span class="jxr_string">"======================================= Setup TSO Clients ========================================"</span>);
+<a class="jxr_linenumber" name="93" href="#93">93</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
+<a class="jxr_linenumber" name="94" href="#94">94</a>  
+<a class="jxr_linenumber" name="95" href="#95">95</a>          <em class="jxr_comment">// Configure direct connection to the server</em>
+<a class="jxr_linenumber" name="96" href="#96">96</a>          OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="97" href="#97">97</a>          tsoClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + tsoServerPortForTest);
+<a class="jxr_linenumber" name="98" href="#98">98</a>  
+<a class="jxr_linenumber" name="99" href="#99">99</a>          tsoClient = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="100" href="#100">100</a>         justAnotherTSOClient = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
 <a class="jxr_linenumber" name="102" href="#102">102</a>         LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>         Thread.currentThread().setName(<span class="jxr_string">"Test Thread"</span>);
+<a class="jxr_linenumber" name="103" href="#103">103</a>         LOG.info(<span class="jxr_string">"===================================== TSO Clients Initialized ===================================="</span>);
+<a class="jxr_linenumber" name="104" href="#104">104</a>         LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
 <a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>     }
+<a class="jxr_linenumber" name="106" href="#106">106</a>         Thread.currentThread().setName(<span class="jxr_string">"Test Thread"</span>);
 <a class="jxr_linenumber" name="107" href="#107">107</a> 
-<a class="jxr_linenumber" name="108" href="#108">108</a>     @AfterClass
-<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="110" href="#110">110</a> 
-<a class="jxr_linenumber" name="111" href="#111">111</a>         tsoClient.close().get();
+<a class="jxr_linenumber" name="108" href="#108">108</a>     }
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>     @AfterClass
+<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a>         tsoServer.stopAndWait();
-<a class="jxr_linenumber" name="114" href="#114">114</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="115" href="#115">115</a>         TestUtils.waitForSocketNotListening(TSO_SERVER_HOST, tsoServerPortForTest, 1000);
-<a class="jxr_linenumber" name="116" href="#116">116</a> 
-<a class="jxr_linenumber" name="117" href="#117">117</a>     }
+<a class="jxr_linenumber" name="113" href="#113">113</a>         tsoClient.close().get();
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>         tsoServer.stopAndWait();
+<a class="jxr_linenumber" name="116" href="#116">116</a>         tsoServer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="117" href="#117">117</a>         TestUtils.waitForSocketNotListening(TSO_SERVER_HOST, tsoServerPortForTest, 1000);
 <a class="jxr_linenumber" name="118" href="#118">118</a> 
-<a class="jxr_linenumber" name="119" href="#119">119</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestampsOrderingGrowMonotonically() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="121" href="#121">121</a>         <strong class="jxr_keyword">long</strong> referenceTimestamp;
-<a class="jxr_linenumber" name="122" href="#122">122</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="123" href="#123">123</a>         referenceTimestamp = startTsTx1;
-<a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a>         <strong class="jxr_keyword">long</strong> startTsTx2 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="126" href="#126">126</a>         assertEquals(startTsTx2, ++referenceTimestamp, <span class="jxr_string">"Should grow monotonically"</span>);
-<a class="jxr_linenumber" name="127" href="#127">127</a>         assertTrue(startTsTx2 &gt; startTsTx1, <span class="jxr_string">"Two timestamps obtained consecutively should grow"</span>);
-<a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">long</strong> commitTsTx2 = tsoClient.commit(startTsTx2, Sets.newHashSet(c1)).get();
-<a class="jxr_linenumber" name="130" href="#130">130</a>         assertEquals(commitTsTx2, ++referenceTimestamp, <span class="jxr_string">"Should grow monotonically"</span>);
+<a class="jxr_linenumber" name="119" href="#119">119</a>     }
+<a class="jxr_linenumber" name="120" href="#120">120</a> 
+<a class="jxr_linenumber" name="121" href="#121">121</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestampsOrderingGrowMonotonically() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="123" href="#123">123</a>         <strong class="jxr_keyword">long</strong> referenceTimestamp;
+<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="125" href="#125">125</a>         referenceTimestamp = startTsTx1;
+<a class="jxr_linenumber" name="126" href="#126">126</a> 
+<a class="jxr_linenumber" name="127" href="#127">127</a>         <strong class="jxr_keyword">long</strong> startTsTx2 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="128" href="#128">128</a>         referenceTimestamp += AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="129" href="#129">129</a>         assertEquals(startTsTx2, referenceTimestamp, <span class="jxr_string">"Should grow monotonically"</span>);
+<a class="jxr_linenumber" name="130" href="#130">130</a>         assertTrue(startTsTx2 &gt; startTsTx1, <span class="jxr_string">"Two timestamps obtained consecutively should grow"</span>);
 <a class="jxr_linenumber" name="131" href="#131">131</a> 
-<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">long</strong> commitTsTx1 = tsoClient.commit(startTsTx1, Sets.newHashSet(c2)).get();
-<a class="jxr_linenumber" name="133" href="#133">133</a>         assertEquals(commitTsTx1, ++referenceTimestamp, <span class="jxr_string">"Should grow monotonically"</span>);
-<a class="jxr_linenumber" name="134" href="#134">134</a> 
-<a class="jxr_linenumber" name="135" href="#135">135</a>         <strong class="jxr_keyword">long</strong> startTsTx3 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="136" href="#136">136</a>         assertEquals(startTsTx3, ++referenceTimestamp, <span class="jxr_string">"Should grow monotonically"</span>);
-<a class="jxr_linenumber" name="137" href="#137">137</a>     }
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSimpleTransactionWithNoWriteSetCanCommit() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="141" href="#141">141</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="142" href="#142">142</a>         <strong class="jxr_keyword">long</strong> commitTsTx1 = tsoClient.commit(startTsTx1, Sets.&lt;CellId&gt;newHashSet()).get();
-<a class="jxr_linenumber" name="143" href="#143">143</a>         assertTrue(commitTsTx1 &gt; startTsTx1);
-<a class="jxr_linenumber" name="144" href="#144">144</a>     }
-<a class="jxr_linenumber" name="145" href="#145">145</a> 
-<a class="jxr_linenumber" name="146" href="#146">146</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionWithMassiveWriteSetCanCommit() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="148" href="#148">148</a>         <strong class="jxr_keyword">long</strong> startTs = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>         Set&lt;CellId&gt; cells = <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;();
-<a class="jxr_linenumber" name="151" href="#151">151</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 1_000_000; i++) {
-<a class="jxr_linenumber" name="152" href="#152">152</a>             cells.add(<strong class="jxr_keyword">new</strong> DummyCellIdImpl(i));
-<a class="jxr_linenumber" name="153" href="#153">153</a>         }
-<a class="jxr_linenumber" name="154" href="#154">154</a> 
-<a class="jxr_linenumber" name="155" href="#155">155</a>         <strong class="jxr_keyword">long</strong> commitTs = tsoClient.commit(startTs, cells).get();
-<a class="jxr_linenumber" name="156" href="#156">156</a>         assertTrue(commitTs &gt; startTs, <span class="jxr_string">"Commit TS should be higher than Start TS"</span>);
-<a class="jxr_linenumber" name="157" href="#157">157</a>     }
-<a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMultipleSerialCommitsDoNotConflict() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="162" href="#162">162</a>         <strong class="jxr_keyword">long</strong> commitTsTx1 = tsoClient.commit(startTsTx1, Sets.newHashSet(c1)).get();
-<a class="jxr_linenumber" name="163" href="#163">163</a>         assertTrue(commitTsTx1 &gt; startTsTx1, <span class="jxr_string">"Commit TS must be greater than Start TS"</span>);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">long</strong> commitTsTx2 = tsoClient.commit(startTsTx2, Sets.newHashSet(c1)).get();
+<a class="jxr_linenumber" name="133" href="#133">133</a>         referenceTimestamp += AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="134" href="#134">134</a>         assertEquals(commitTsTx2, referenceTimestamp, <span class="jxr_string">"Should grow monotonically"</span>);
+<a class="jxr_linenumber" name="135" href="#135">135</a> 
+<a class="jxr_linenumber" name="136" href="#136">136</a>         <strong class="jxr_keyword">long</strong> commitTsTx1 = tsoClient.commit(startTsTx1, Sets.newHashSet(c2)).get();
+<a class="jxr_linenumber" name="137" href="#137">137</a>         referenceTimestamp += AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="138" href="#138">138</a>         assertEquals(commitTsTx1, referenceTimestamp, <span class="jxr_string">"Should grow monotonically"</span>);
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>         <strong class="jxr_keyword">long</strong> startTsTx3 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="141" href="#141">141</a>         referenceTimestamp += AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="142" href="#142">142</a>         assertEquals(startTsTx3, referenceTimestamp, <span class="jxr_string">"Should grow monotonically"</span>);
+<a class="jxr_linenumber" name="143" href="#143">143</a>     }
+<a class="jxr_linenumber" name="144" href="#144">144</a> 
+<a class="jxr_linenumber" name="145" href="#145">145</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="146" href="#146">146</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSimpleTransactionWithNoWriteSetCanCommit() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="147" href="#147">147</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="148" href="#148">148</a>         <strong class="jxr_keyword">long</strong> commitTsTx1 = tsoClient.commit(startTsTx1, Sets.&lt;CellId&gt;newHashSet()).get();
+<a class="jxr_linenumber" name="149" href="#149">149</a>         assertTrue(commitTsTx1 &gt; startTsTx1);
+<a class="jxr_linenumber" name="150" href="#150">150</a>     }
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="153" href="#153">153</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionWithMassiveWriteSetCanCommit() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="154" href="#154">154</a>         <strong class="jxr_keyword">long</strong> startTs = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="155" href="#155">155</a> 
+<a class="jxr_linenumber" name="156" href="#156">156</a>         Set&lt;CellId&gt; cells = <strong class="jxr_keyword">new</strong> HashSet&lt;&gt;();
+<a class="jxr_linenumber" name="157" href="#157">157</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 1_000_000; i++) {
+<a class="jxr_linenumber" name="158" href="#158">158</a>             cells.add(<strong class="jxr_keyword">new</strong> DummyCellIdImpl(i));
+<a class="jxr_linenumber" name="159" href="#159">159</a>         }
+<a class="jxr_linenumber" name="160" href="#160">160</a> 
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">long</strong> commitTs = tsoClient.commit(startTs, cells).get();
+<a class="jxr_linenumber" name="162" href="#162">162</a>         assertTrue(commitTs &gt; startTs, <span class="jxr_string">"Commit TS should be higher than Start TS"</span>);
+<a class="jxr_linenumber" name="163" href="#163">163</a>     }
 <a class="jxr_linenumber" name="164" href="#164">164</a> 
-<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">long</strong> startTsTx2 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="166" href="#166">166</a>         assertTrue(startTsTx2 &gt; commitTsTx1, <span class="jxr_string">"TS should grow monotonically"</span>);
-<a class="jxr_linenumber" name="167" href="#167">167</a> 
-<a class="jxr_linenumber" name="168" href="#168">168</a>         <strong class="jxr_keyword">long</strong> commitTsTx2 = tsoClient.commit(startTsTx2, Sets.newHashSet(c1, c2)).get();
-<a class="jxr_linenumber" name="169" href="#169">169</a>         assertTrue(commitTsTx2 &gt; startTsTx2, <span class="jxr_string">"Commit TS must be greater than Start TS"</span>);
+<a class="jxr_linenumber" name="165" href="#165">165</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMultipleSerialCommitsDoNotConflict() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="168" href="#168">168</a>         <strong class="jxr_keyword">long</strong> commitTsTx1 = tsoClient.commit(startTsTx1, Sets.newHashSet(c1)).get();
+<a class="jxr_linenumber" name="169" href="#169">169</a>         assertTrue(commitTsTx1 &gt; startTsTx1, <span class="jxr_string">"Commit TS must be greater than Start TS"</span>);
 <a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">long</strong> startTsTx3 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="172" href="#172">172</a>         <strong class="jxr_keyword">long</strong> commitTsTx3 = tsoClient.commit(startTsTx3, Sets.newHashSet(c2)).get();
-<a class="jxr_linenumber" name="173" href="#173">173</a>         assertTrue(commitTsTx3 &gt; startTsTx3, <span class="jxr_string">"Commit TS must be greater than Start TS"</span>);
-<a class="jxr_linenumber" name="174" href="#174">174</a>     }
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="177" href="#177">177</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitWritesToCommitTable() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="178" href="#178">178</a>         <strong class="jxr_keyword">long</strong> startTsForTx1 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="179" href="#179">179</a>         <strong class="jxr_keyword">long</strong> startTsForTx2 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="180" href="#180">180</a>         assertTrue(startTsForTx2 &gt; startTsForTx1, <span class="jxr_string">"Start TS should grow"</span>);
+<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">long</strong> startTsTx2 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="172" href="#172">172</a>         assertTrue(startTsTx2 &gt; commitTsTx1, <span class="jxr_string">"TS should grow monotonically"</span>);
+<a class="jxr_linenumber" name="173" href="#173">173</a> 
+<a class="jxr_linenumber" name="174" href="#174">174</a>         <strong class="jxr_keyword">long</strong> commitTsTx2 = tsoClient.commit(startTsTx2, Sets.newHashSet(c1, c2)).get();
+<a class="jxr_linenumber" name="175" href="#175">175</a>         assertTrue(commitTsTx2 &gt; startTsTx2, <span class="jxr_string">"Commit TS must be greater than Start TS"</span>);
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">long</strong> startTsTx3 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="178" href="#178">178</a>         <strong class="jxr_keyword">long</strong> commitTsTx3 = tsoClient.commit(startTsTx3, Sets.newHashSet(c2)).get();
+<a class="jxr_linenumber" name="179" href="#179">179</a>         assertTrue(commitTsTx3 &gt; startTsTx3, <span class="jxr_string">"Commit TS must be greater than Start TS"</span>);
+<a class="jxr_linenumber" name="180" href="#180">180</a>     }
 <a class="jxr_linenumber" name="181" href="#181">181</a> 
-<a class="jxr_linenumber" name="182" href="#182">182</a>         assertFalse(commitTableClient.getCommitTimestamp(startTsForTx1).get().isPresent(),
-<a class="jxr_linenumber" name="183" href="#183">183</a>                 <span class="jxr_string">"Commit TS for Tx1 shouldn't appear in Commit Table"</span>);
-<a class="jxr_linenumber" name="184" href="#184">184</a> 
-<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">long</strong> commitTsForTx1 = tsoClient.commit(startTsForTx1, Sets.newHashSet(c1)).get();
-<a class="jxr_linenumber" name="186" href="#186">186</a>         assertTrue(commitTsForTx1 &gt; startTsForTx1, <span class="jxr_string">"Commit TS should be higher than Start TS for the same tx"</span>);
+<a class="jxr_linenumber" name="182" href="#182">182</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="183" href="#183">183</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitWritesToCommitTable() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">long</strong> startTsForTx1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">long</strong> startTsForTx2 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="186" href="#186">186</a>         assertTrue(startTsForTx2 &gt; startTsForTx1, <span class="jxr_string">"Start TS should grow"</span>);
 <a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>         Long commitTs1InCommitTable = commitTableClient.getCommitTimestamp(startTsForTx1).get().get().getValue();
-<a class="jxr_linenumber" name="189" href="#189">189</a>         assertNotNull(commitTs1InCommitTable, <span class="jxr_string">"Tx is committed, should return as such from Commit Table"</span>);
-<a class="jxr_linenumber" name="190" href="#190">190</a>         assertEquals(commitTsForTx1, (<strong class="jxr_keyword">long</strong>) commitTs1InCommitTable,
-<a class="jxr_linenumber" name="191" href="#191">191</a>                 <span class="jxr_string">"getCommitTimestamp() &amp; commit() should report same Commit TS value for same tx"</span>);
-<a class="jxr_linenumber" name="192" href="#192">192</a>         assertTrue(commitTs1InCommitTable &gt; startTsForTx2, <span class="jxr_string">"Commit TS should be higher than tx's Start TS"</span>);
-<a class="jxr_linenumber" name="193" href="#193">193</a>     }
-<a class="jxr_linenumber" name="194" href="#194">194</a> 
-<a class="jxr_linenumber" name="195" href="#195">195</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTwoConcurrentTxWithOverlappingWritesetsHaveConflicts() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="197" href="#197">197</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="198" href="#198">198</a>         <strong class="jxr_keyword">long</strong> startTsTx2 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="199" href="#199">199</a>         assertTrue(startTsTx2 &gt; startTsTx1, <span class="jxr_string">"Second TX should have higher TS"</span>);
+<a class="jxr_linenumber" name="188" href="#188">188</a>         assertFalse(commitTableClient.getCommitTimestamp(startTsForTx1).get().isPresent(),
+<a class="jxr_linenumber" name="189" href="#189">189</a>                 <span class="jxr_string">"Commit TS for Tx1 shouldn't appear in Commit Table"</span>);
+<a class="jxr_linenumber" name="190" href="#190">190</a> 
+<a class="jxr_linenumber" name="191" href="#191">191</a>         <strong class="jxr_keyword">long</strong> commitTsForTx1 = tsoClient.commit(startTsForTx1, Sets.newHashSet(c1)).get();
+<a class="jxr_linenumber" name="192" href="#192">192</a>         assertTrue(commitTsForTx1 &gt; startTsForTx1, <span class="jxr_string">"Commit TS should be higher than Start TS for the same tx"</span>);
+<a class="jxr_linenumber" name="193" href="#193">193</a> 
+<a class="jxr_linenumber" name="194" href="#194">194</a>         Long commitTs1InCommitTable = commitTableClient.getCommitTimestamp(startTsForTx1).get().get().getValue();
+<a class="jxr_linenumber" name="195" href="#195">195</a>         assertNotNull(commitTs1InCommitTable, <span class="jxr_string">"Tx is committed, should return as such from Commit Table"</span>);
+<a class="jxr_linenumber" name="196" href="#196">196</a>         assertEquals(commitTsForTx1, (<strong class="jxr_keyword">long</strong>) commitTs1InCommitTable,
+<a class="jxr_linenumber" name="197" href="#197">197</a>                 <span class="jxr_string">"getCommitTimestamp() &amp; commit() should report same Commit TS value for same tx"</span>);
+<a class="jxr_linenumber" name="198" href="#198">198</a>         assertTrue(commitTs1InCommitTable &gt; startTsForTx2, <span class="jxr_string">"Commit TS should be higher than tx's Start TS"</span>);
+<a class="jxr_linenumber" name="199" href="#199">199</a>     }
 <a class="jxr_linenumber" name="200" href="#200">200</a> 
-<a class="jxr_linenumber" name="201" href="#201">201</a>         <strong class="jxr_keyword">long</strong> commitTsTx1 = tsoClient.commit(startTsTx1, Sets.newHashSet(c1)).get();
-<a class="jxr_linenumber" name="202" href="#202">202</a>         assertTrue(commitTsTx1 &gt; startTsTx1, <span class="jxr_string">"Commit TS must be higher than Start TS for the same tx"</span>);
-<a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="205" href="#205">205</a>             tsoClient.commit(startTsTx2, Sets.newHashSet(c1, c2)).get();
-<a class="jxr_linenumber" name="206" href="#206">206</a>             Assert.fail(<span class="jxr_string">"Second TX should fail on commit"</span>);
-<a class="jxr_linenumber" name="207" href="#207">207</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
-<a class="jxr_linenumber" name="208" href="#208">208</a>             assertEquals(AbortException.<strong class="jxr_keyword">class</strong>, ee.getCause().getClass(), <span class="jxr_string">"Should have aborted"</span>);
-<a class="jxr_linenumber" name="209" href="#209">209</a>         }
-<a class="jxr_linenumber" name="210" href="#210">210</a>     }
-<a class="jxr_linenumber" name="211" href="#211">211</a> 
-<a class="jxr_linenumber" name="212" href="#212">212</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="213" href="#213">213</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testConflictsAndMonotonicallyTimestampGrowthWithTwoDifferentTSOClients() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="214" href="#214">214</a>         <strong class="jxr_keyword">long</strong> startTsTx1Client1 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="215" href="#215">215</a>         <strong class="jxr_keyword">long</strong> startTsTx2Client1 = tsoClient.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="216" href="#216">216</a>         <strong class="jxr_keyword">long</strong> startTsTx3Client1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="201" href="#201">201</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="202" href="#202">202</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTwoConcurrentTxWithOverlappingWritesetsHaveConflicts() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="203" href="#203">203</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="204" href="#204">204</a>         <strong class="jxr_keyword">long</strong> startTsTx2 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="205" href="#205">205</a>         assertTrue(startTsTx2 &gt; startTsTx1, <span class="jxr_string">"Second TX should have higher TS"</span>);
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>         <strong class="jxr_keyword">long</strong> commitTsTx1 = tsoClient.commit(startTsTx1, Sets.newHashSet(c1)).get();
+<a class="jxr_linenumber" name="208" href="#208">208</a>         assertTrue(commitTsTx1 &gt; startTsTx1, <span class="jxr_string">"Commit TS must be higher than Start TS for the same tx"</span>);
+<a class="jxr_linenumber" name="209" href="#209">209</a> 
+<a class="jxr_linenumber" name="210" href="#210">210</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="211" href="#211">211</a>             tsoClient.commit(startTsTx2, Sets.newHashSet(c1, c2)).get();
+<a class="jxr_linenumber" name="212" href="#212">212</a>             Assert.fail(<span class="jxr_string">"Second TX should fail on commit"</span>);
+<a class="jxr_linenumber" name="213" href="#213">213</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="214" href="#214">214</a>             assertEquals(AbortException.<strong class="jxr_keyword">class</strong>, ee.getCause().getClass(), <span class="jxr_string">"Should have aborted"</span>);
+<a class="jxr_linenumber" name="215" href="#215">215</a>         }
+<a class="jxr_linenumber" name="216" href="#216">216</a>     }
 <a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>         tsoClient.commit(startTsTx1Client1, Sets.newHashSet(c1)).get();
-<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="220" href="#220">220</a>             tsoClient.commit(startTsTx3Client1, Sets.newHashSet(c1, c2)).get();
-<a class="jxr_linenumber" name="221" href="#221">221</a>             Assert.fail(<span class="jxr_string">"Second commit should fail as conflicts with the previous concurrent one"</span>);
-<a class="jxr_linenumber" name="222" href="#222">222</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
-<a class="jxr_linenumber" name="223" href="#223">223</a>             assertEquals(AbortException.<strong class="jxr_keyword">class</strong>, ee.getCause().getClass(), <span class="jxr_string">"Should have aborted"</span>);
-<a class="jxr_linenumber" name="224" href="#224">224</a>         }
-<a class="jxr_linenumber" name="225" href="#225">225</a>         <strong class="jxr_keyword">long</strong> startTsTx4Client2 = justAnotherTSOClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="218" href="#218">218</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="219" href="#219">219</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionStartedBeforeFenceAborts() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="220" href="#220">220</a> 
+<a class="jxr_linenumber" name="221" href="#221">221</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="222" href="#222">222</a> 
+<a class="jxr_linenumber" name="223" href="#223">223</a>         <strong class="jxr_keyword">long</strong> fenceID = tsoClient.getFence(c1.getTableId()).get();
+<a class="jxr_linenumber" name="224" href="#224">224</a> 
+<a class="jxr_linenumber" name="225" href="#225">225</a>         assertTrue(fenceID &gt; startTsTx1, <span class="jxr_string">"Fence ID should be higher thank Tx1ID"</span>);
 <a class="jxr_linenumber" name="226" href="#226">226</a> 
-<a class="jxr_linenumber" name="227" href="#227">227</a>         assertFalse(commitTableClient.getCommitTimestamp(startTsTx3Client1).get().isPresent(), <span class="jxr_string">"Tx3 didn't commit"</span>);
-<a class="jxr_linenumber" name="228" href="#228">228</a>         <strong class="jxr_keyword">long</strong> commitTSTx1 = commitTableClient.getCommitTimestamp(startTsTx1Client1).get().get().getValue();
-<a class="jxr_linenumber" name="229" href="#229">229</a>         assertTrue(commitTSTx1 &gt; startTsTx2Client1, <span class="jxr_string">"Tx1 committed after Tx2 started"</span>);
-<a class="jxr_linenumber" name="230" href="#230">230</a>         assertTrue(commitTSTx1 &lt; startTsTx4Client2, <span class="jxr_string">"Tx1 committed before Tx4 started on the other TSO Client"</span>);
-<a class="jxr_linenumber" name="231" href="#231">231</a>     }
-<a class="jxr_linenumber" name="232" href="#232">232</a> 
-<a class="jxr_linenumber" name="233" href="#233">233</a> }
+<a class="jxr_linenumber" name="227" href="#227">227</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="228" href="#228">228</a>             tsoClient.commit(startTsTx1, Sets.newHashSet(c1, c2)).get();
+<a class="jxr_linenumber" name="229" href="#229">229</a>             Assert.fail(<span class="jxr_string">"TX should fail on commit"</span>);
+<a class="jxr_linenumber" name="230" href="#230">230</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="231" href="#231">231</a>             assertEquals(AbortException.<strong class="jxr_keyword">class</strong>, ee.getCause().getClass(), <span class="jxr_string">"Should have aborted"</span>);
+<a class="jxr_linenumber" name="232" href="#232">232</a>         }
+<a class="jxr_linenumber" name="233" href="#233">233</a>     }
+<a class="jxr_linenumber" name="234" href="#234">234</a> 
+<a class="jxr_linenumber" name="235" href="#235">235</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="236" href="#236">236</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionStartedBeforeNonOverlapFenceCommits() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="237" href="#237">237</a> 
+<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="239" href="#239">239</a> 
+<a class="jxr_linenumber" name="240" href="#240">240</a>         tsoClient.getFence(7).get();
+<a class="jxr_linenumber" name="241" href="#241">241</a> 
+<a class="jxr_linenumber" name="242" href="#242">242</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="243" href="#243">243</a>             tsoClient.commit(startTsTx1, Sets.newHashSet(c1, c2)).get();
+<a class="jxr_linenumber" name="244" href="#244">244</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="245" href="#245">245</a>             Assert.fail(<span class="jxr_string">"TX should successfully commit"</span>);        }
+<a class="jxr_linenumber" name="246" href="#246">246</a>     }
+<a class="jxr_linenumber" name="247" href="#247">247</a> 
+<a class="jxr_linenumber" name="248" href="#248">248</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="249" href="#249">249</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionStartedAfterFenceCommits() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="250" href="#250">250</a> 
+<a class="jxr_linenumber" name="251" href="#251">251</a>         tsoClient.getFence(c1.getTableId()).get();
+<a class="jxr_linenumber" name="252" href="#252">252</a> 
+<a class="jxr_linenumber" name="253" href="#253">253</a>         <strong class="jxr_keyword">long</strong> startTsTx1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="254" href="#254">254</a> 
+<a class="jxr_linenumber" name="255" href="#255">255</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="256" href="#256">256</a>             tsoClient.commit(startTsTx1, Sets.newHashSet(c1, c2)).get();
+<a class="jxr_linenumber" name="257" href="#257">257</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="258" href="#258">258</a>             Assert.fail(<span class="jxr_string">"TX should successfully commit"</span>);
+<a class="jxr_linenumber" name="259" href="#259">259</a>         }
+<a class="jxr_linenumber" name="260" href="#260">260</a>     }
+<a class="jxr_linenumber" name="261" href="#261">261</a> 
+<a class="jxr_linenumber" name="262" href="#262">262</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="263" href="#263">263</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testConflictsAndMonotonicallyTimestampGrowthWithTwoDifferentTSOClients() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="264" href="#264">264</a>         <strong class="jxr_keyword">long</strong> startTsTx1Client1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="265" href="#265">265</a>         <strong class="jxr_keyword">long</strong> startTsTx2Client1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="266" href="#266">266</a>         <strong class="jxr_keyword">long</strong> startTsTx3Client1 = tsoClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="267" href="#267">267</a> 
+<a class="jxr_linenumber" name="268" href="#268">268</a>         tsoClient.commit(startTsTx1Client1, Sets.newHashSet(c1)).get();
+<a class="jxr_linenumber" name="269" href="#269">269</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="270" href="#270">270</a>             tsoClient.commit(startTsTx3Client1, Sets.newHashSet(c1, c2)).get();
+<a class="jxr_linenumber" name="271" href="#271">271</a>             Assert.fail(<span class="jxr_string">"Second commit should fail as conflicts with the previous concurrent one"</span>);
+<a class="jxr_linenumber" name="272" href="#272">272</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="273" href="#273">273</a>             assertEquals(AbortException.<strong class="jxr_keyword">class</strong>, ee.getCause().getClass(), <span class="jxr_string">"Should have aborted"</span>);
+<a class="jxr_linenumber" name="274" href="#274">274</a>         }
+<a class="jxr_linenumber" name="275" href="#275">275</a>         <strong class="jxr_keyword">long</strong> startTsTx4Client2 = justAnotherTSOClient.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="276" href="#276">276</a> 
+<a class="jxr_linenumber" name="277" href="#277">277</a>         assertFalse(commitTableClient.getCommitTimestamp(startTsTx3Client1).get().isPresent(), <span class="jxr_string">"Tx3 didn't commit"</span>);
+<a class="jxr_linenumber" name="278" href="#278">278</a>         <strong class="jxr_keyword">long</strong> commitTSTx1 = commitTableClient.getCommitTimestamp(startTsTx1Client1).get().get().getValue();
+<a class="jxr_linenumber" name="279" href="#279">279</a>         assertTrue(commitTSTx1 &gt; startTsTx2Client1, <span class="jxr_string">"Tx1 committed after Tx2 started"</span>);
+<a class="jxr_linenumber" name="280" href="#280">280</a>         assertTrue(commitTSTx1 &lt; startTsTx4Client2, <span class="jxr_string">"Tx1 committed before Tx4 started on the other TSO Client"</span>);
+<a class="jxr_linenumber" name="281" href="#281">281</a>     }
+<a class="jxr_linenumber" name="282" href="#282">282</a> 
+<a class="jxr_linenumber" name="283" href="#283">283</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/client/TestMockTSOClient.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/client/TestMockTSOClient.html b/xref-test/org/apache/omid/tso/client/TestMockTSOClient.html
index 3846e24..57a0f8b 100644
--- a/xref-test/org/apache/omid/tso/client/TestMockTSOClient.html
+++ b/xref-test/org/apache/omid/tso/client/TestMockTSOClient.html
@@ -28,58 +28,60 @@
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.tso.client;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Sets;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.InMemoryCommitTable;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.util.DummyCellIdImpl;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestMockTSOClient.html">TestMockTSOClient</a> {
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.InMemoryCommitTable;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.util.DummyCellIdImpl;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
 <a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL);
-<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(-0xfeedcafeL);
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testConflicts() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="39" href="#39">39</a>          CommitTable commitTable = <strong class="jxr_keyword">new</strong> InMemoryCommitTable();
-<a class="jxr_linenumber" name="40" href="#40">40</a>          TSOProtocol client = <strong class="jxr_keyword">new</strong> MockTSOClient(commitTable.getWriter());
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>          <strong class="jxr_keyword">long</strong> tr1 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="43" href="#43">43</a>          <strong class="jxr_keyword">long</strong> tr2 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="44" href="#44">44</a>  
-<a class="jxr_linenumber" name="45" href="#45">45</a>          client.commit(tr1, Sets.newHashSet(c1)).get();
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestMockTSOClient.html">TestMockTSOClient</a> {
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL);
+<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(-0xfeedcafeL);
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testConflicts() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="41" href="#41">41</a>          CommitTable commitTable = <strong class="jxr_keyword">new</strong> InMemoryCommitTable();
+<a class="jxr_linenumber" name="42" href="#42">42</a>          TSOProtocol client = <strong class="jxr_keyword">new</strong> MockTSOClient(commitTable.getWriter());
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">long</strong> tr1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="45" href="#45">45</a>          <strong class="jxr_keyword">long</strong> tr2 = client.getNewStartTimestamp().get();
 <a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="48" href="#48">48</a>              client.commit(tr2, Sets.newHashSet(c1, c2)).get();
-<a class="jxr_linenumber" name="49" href="#49">49</a>              fail(<span class="jxr_string">"Shouldn't have committed"</span>);
-<a class="jxr_linenumber" name="50" href="#50">50</a>          } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
-<a class="jxr_linenumber" name="51" href="#51">51</a>              assertEquals(ee.getCause().getClass(), AbortException.<strong class="jxr_keyword">class</strong>, <span class="jxr_string">"Should have aborted"</span>);
-<a class="jxr_linenumber" name="52" href="#52">52</a>          }
-<a class="jxr_linenumber" name="53" href="#53">53</a>      }
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testWatermarkUpdate() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="57" href="#57">57</a>          CommitTable commitTable = <strong class="jxr_keyword">new</strong> InMemoryCommitTable();
-<a class="jxr_linenumber" name="58" href="#58">58</a>          TSOProtocol client = <strong class="jxr_keyword">new</strong> MockTSOClient(commitTable.getWriter());
-<a class="jxr_linenumber" name="59" href="#59">59</a>          CommitTable.Client commitTableClient = commitTable.getClient();
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">long</strong> tr1 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="62" href="#62">62</a>          client.commit(tr1, Sets.newHashSet(c1)).get();
-<a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">long</strong> initWatermark = commitTableClient.readLowWatermark().get();
+<a class="jxr_linenumber" name="47" href="#47">47</a>          client.commit(tr1, Sets.newHashSet(c1), <strong class="jxr_keyword">new</strong> HashSet&lt;CellId&gt;()).get();
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="50" href="#50">50</a>              client.commit(tr2, Sets.newHashSet(c1, c2), <strong class="jxr_keyword">new</strong> HashSet&lt;CellId&gt;()).get();
+<a class="jxr_linenumber" name="51" href="#51">51</a>              fail(<span class="jxr_string">"Shouldn't have committed"</span>);
+<a class="jxr_linenumber" name="52" href="#52">52</a>          } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="53" href="#53">53</a>              assertEquals(ee.getCause().getClass(), AbortException.<strong class="jxr_keyword">class</strong>, <span class="jxr_string">"Should have aborted"</span>);
+<a class="jxr_linenumber" name="54" href="#54">54</a>          }
+<a class="jxr_linenumber" name="55" href="#55">55</a>      }
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testWatermarkUpdate() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="59" href="#59">59</a>          CommitTable commitTable = <strong class="jxr_keyword">new</strong> InMemoryCommitTable();
+<a class="jxr_linenumber" name="60" href="#60">60</a>          TSOProtocol client = <strong class="jxr_keyword">new</strong> MockTSOClient(commitTable.getWriter());
+<a class="jxr_linenumber" name="61" href="#61">61</a>          CommitTable.Client commitTableClient = commitTable.getClient();
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">long</strong> tr1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="64" href="#64">64</a>          client.commit(tr1, Sets.newHashSet(c1), <strong class="jxr_keyword">new</strong> HashSet&lt;CellId&gt;()).get();
 <a class="jxr_linenumber" name="65" href="#65">65</a>  
-<a class="jxr_linenumber" name="66" href="#66">66</a>          <strong class="jxr_keyword">long</strong> tr2 = client.getNewStartTimestamp().get();
-<a class="jxr_linenumber" name="67" href="#67">67</a>          client.commit(tr2, Sets.newHashSet(c1)).get();
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>          <strong class="jxr_keyword">long</strong> newWatermark = commitTableClient.readLowWatermark().get();
-<a class="jxr_linenumber" name="70" href="#70">70</a>          assertTrue(newWatermark &gt; initWatermark, <span class="jxr_string">"new low watermark should be bigger"</span>);
-<a class="jxr_linenumber" name="71" href="#71">71</a>      }
-<a class="jxr_linenumber" name="72" href="#72">72</a>  }
+<a class="jxr_linenumber" name="66" href="#66">66</a>          <strong class="jxr_keyword">long</strong> initWatermark = commitTableClient.readLowWatermark().get();
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>          <strong class="jxr_keyword">long</strong> tr2 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="69" href="#69">69</a>          client.commit(tr2, Sets.newHashSet(c1), <strong class="jxr_keyword">new</strong> HashSet&lt;CellId&gt;()).get();
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">long</strong> newWatermark = commitTableClient.readLowWatermark().get();
+<a class="jxr_linenumber" name="72" href="#72">72</a>          assertTrue(newWatermark &gt; initWatermark, <span class="jxr_string">"new low watermark should be bigger"</span>);
+<a class="jxr_linenumber" name="73" href="#73">73</a>      }
+<a class="jxr_linenumber" name="74" href="#74">74</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[38/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestEndToEndScenariosWithHA.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestEndToEndScenariosWithHA.html b/xref-test/org/apache/omid/transaction/TestEndToEndScenariosWithHA.html
index b69abfe..59b78be 100644
--- a/xref-test/org/apache/omid/transaction/TestEndToEndScenariosWithHA.html
+++ b/xref-test/org/apache/omid/transaction/TestEndToEndScenariosWithHA.html
@@ -27,399 +27,400 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.LeaseManagement;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.PausableLeaseManager;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.RetryPolicy;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.CuratorFramework;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.CuratorFrameworkFactory;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.recipes.cache.NodeCache;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.recipes.cache.NodeCacheListener;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.retry.ExponentialBackoffRetry;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME;
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_CF_NAME;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConnType.HA;
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.HConstants.HBASE_CLIENT_RETRIES_NUMBER;
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="57" href="#57">57</a>  
-<a class="jxr_linenumber" name="58" href="#58">58</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestEndToEndScenariosWithHA.html">TestEndToEndScenariosWithHA</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TEST_LEASE_PERIOD_MS = 5_000;
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CURRENT_TSO_PATH = <span class="jxr_string">"/CURRENT_TSO_PATH"</span>;
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_LEASE_PATH = <span class="jxr_string">"/TSO_LEASE_PATH"</span>;
-<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NAMESPACE = <span class="jxr_string">"omid"</span>;
-<a class="jxr_linenumber" name="65" href="#65">65</a>  
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestEndToEndScenariosWithHA.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="67" href="#67">67</a>  
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier1 = Bytes.toBytes(<span class="jxr_string">"test-q1"</span>);
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier2 = Bytes.toBytes(<span class="jxr_string">"test-q2l"</span>);
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row2 = Bytes.toBytes(<span class="jxr_string">"row2"</span>);
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] initialData = Bytes.toBytes(<span class="jxr_string">"testWrite-0"</span>);
-<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1_q1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1-q1"</span>);
-<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1_q2 = Bytes.toBytes(<span class="jxr_string">"testWrite-1-q2"</span>);
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data2_q1 = Bytes.toBytes(<span class="jxr_string">"testWrite-2-q1"</span>);
-<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data2_q2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2-q2"</span>);
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO1_PORT = 2223;
-<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO2_PORT = 4321;
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">private</strong> CountDownLatch barrierTillTSOAddressPublication;
-<a class="jxr_linenumber" name="81" href="#81">81</a>  
-<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">private</strong> CuratorFramework zkClient;
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">private</strong> TSOServer tso1;
-<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> TSOServer tso2;
-<a class="jxr_linenumber" name="86" href="#86">86</a>  
-<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a> leaseManager1;
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">private</strong> TransactionManager tm;
-<a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>      @BeforeMethod(alwaysRun = <strong class="jxr_keyword">true</strong>, timeOut = 30_000)
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setup() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="93" href="#93">93</a>          <em class="jxr_comment">// Get the zkConnection string from minicluster</em>
-<a class="jxr_linenumber" name="94" href="#94">94</a>          String zkConnection = <span class="jxr_string">"localhost:"</span> + hBaseUtils.getZkCluster().getClientPort();
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          zkClient = provideInitializedZookeeperClient(zkConnection);
-<a class="jxr_linenumber" name="97" href="#97">97</a>  
-<a class="jxr_linenumber" name="98" href="#98">98</a>          <em class="jxr_comment">// Synchronize TSO start</em>
-<a class="jxr_linenumber" name="99" href="#99">99</a>          barrierTillTSOAddressPublication = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
-<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">final</strong> NodeCache currentTSOZNode = <strong class="jxr_keyword">new</strong> NodeCache(zkClient, CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="101" href="#101">101</a>         currentTSOZNode.getListenable().addListener(<strong class="jxr_keyword">new</strong> NodeCacheListener() {
-<a class="jxr_linenumber" name="102" href="#102">102</a> 
-<a class="jxr_linenumber" name="103" href="#103">103</a>             @Override
-<a class="jxr_linenumber" name="104" href="#104">104</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> nodeChanged() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="105" href="#105">105</a>                 byte[] currentTSOAndEpochAsBytes = currentTSOZNode.getCurrentData().getData();
-<a class="jxr_linenumber" name="106" href="#106">106</a>                 String currentTSOAndEpoch = <strong class="jxr_keyword">new</strong> String(currentTSOAndEpochAsBytes, Charsets.UTF_8);
-<a class="jxr_linenumber" name="107" href="#107">107</a>                 <strong class="jxr_keyword">if</strong> (currentTSOAndEpoch.endsWith(<span class="jxr_string">"#0"</span>)) { <em class="jxr_comment">// Wait till a TSO instance publishes the epoch</em>
-<a class="jxr_linenumber" name="108" href="#108">108</a>                     barrierTillTSOAddressPublication.countDown();
-<a class="jxr_linenumber" name="109" href="#109">109</a>                 }
-<a class="jxr_linenumber" name="110" href="#110">110</a>             }
-<a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>         });
-<a class="jxr_linenumber" name="113" href="#113">113</a>         currentTSOZNode.start(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="114" href="#114">114</a> 
-<a class="jxr_linenumber" name="115" href="#115">115</a>         <em class="jxr_comment">// Configure TSO 1</em>
-<a class="jxr_linenumber" name="116" href="#116">116</a>         TSOServerConfig config1 = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="117" href="#117">117</a>         config1.setPort(TSO1_PORT);
-<a class="jxr_linenumber" name="118" href="#118">118</a>         config1.setConflictMapSize(1000);
-<a class="jxr_linenumber" name="119" href="#119">119</a>         config1.setLeaseModule(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestHALeaseManagementModule.html">TestHALeaseManagementModule</a>(TEST_LEASE_PERIOD_MS, TSO_LEASE_PATH, CURRENT_TSO_PATH, zkConnection, NAMESPACE));
-<a class="jxr_linenumber" name="120" href="#120">120</a>         Injector injector1 = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestTSOModule.html">TestTSOModule</a>(hbaseConf, config1));
-<a class="jxr_linenumber" name="121" href="#121">121</a>         LOG.info(<span class="jxr_string">"===================== Starting TSO 1 ====================="</span>);
-<a class="jxr_linenumber" name="122" href="#122">122</a>         tso1 = injector1.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="123" href="#123">123</a>         leaseManager1 = (PausableLeaseManager) injector1.getInstance(LeaseManagement.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="124" href="#124">124</a>         tso1.startAndWait();
-<a class="jxr_linenumber" name="125" href="#125">125</a>         TestUtils.waitForSocketListening(<span class="jxr_string">"localhost"</span>, TSO1_PORT, 100);
-<a class="jxr_linenumber" name="126" href="#126">126</a>         LOG.info(<span class="jxr_string">"================ Finished loading TSO 1 =================="</span>);
-<a class="jxr_linenumber" name="127" href="#127">127</a> 
-<a class="jxr_linenumber" name="128" href="#128">128</a>         <em class="jxr_comment">// Configure TSO 2</em>
-<a class="jxr_linenumber" name="129" href="#129">129</a>         TSOServerConfig config2 = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="130" href="#130">130</a>         config2.setPort(TSO2_PORT);
-<a class="jxr_linenumber" name="131" href="#131">131</a>         config2.setConflictMapSize(1000);
-<a class="jxr_linenumber" name="132" href="#132">132</a>         config2.setLeaseModule(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestHALeaseManagementModule.html">TestHALeaseManagementModule</a>(TEST_LEASE_PERIOD_MS, TSO_LEASE_PATH, CURRENT_TSO_PATH, zkConnection, NAMESPACE));
-<a class="jxr_linenumber" name="133" href="#133">133</a>         Injector injector2 = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestTSOModule.html">TestTSOModule</a>(hbaseConf, config2));
-<a class="jxr_linenumber" name="134" href="#134">134</a>         LOG.info(<span class="jxr_string">"===================== Starting TSO 2 ====================="</span>);
-<a class="jxr_linenumber" name="135" href="#135">135</a>         tso2 = injector2.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="136" href="#136">136</a>         injector2.getInstance(LeaseManagement.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="137" href="#137">137</a>         tso2.startAndWait();
-<a class="jxr_linenumber" name="138" href="#138">138</a>         <em class="jxr_comment">// Don't do this here: TestUtils.waitForSocketListening("localhost", 4321, 100);</em>
-<a class="jxr_linenumber" name="139" href="#139">139</a>         LOG.info(<span class="jxr_string">"================ Finished loading TSO 2 =================="</span>);
-<a class="jxr_linenumber" name="140" href="#140">140</a> 
-<a class="jxr_linenumber" name="141" href="#141">141</a>         <em class="jxr_comment">// Wait till the master TSO is up</em>
-<a class="jxr_linenumber" name="142" href="#142">142</a>         barrierTillTSOAddressPublication.await();
-<a class="jxr_linenumber" name="143" href="#143">143</a>         currentTSOZNode.close();
-<a class="jxr_linenumber" name="144" href="#144">144</a> 
-<a class="jxr_linenumber" name="145" href="#145">145</a>         <em class="jxr_comment">// Configure HBase TM</em>
-<a class="jxr_linenumber" name="146" href="#146">146</a>         LOG.info(<span class="jxr_string">"===================== Starting TM ====================="</span>);
-<a class="jxr_linenumber" name="147" href="#147">147</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="148" href="#148">148</a>         hbaseOmidClientConf.setConnectionType(HA);
-<a class="jxr_linenumber" name="149" href="#149">149</a>         hbaseOmidClientConf.setConnectionString(zkConnection);
-<a class="jxr_linenumber" name="150" href="#150">150</a>         hbaseOmidClientConf.getOmidClientConfiguration().setZkCurrentTsoPath(CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="151" href="#151">151</a>         hbaseOmidClientConf.getOmidClientConfiguration().setZkNamespace(NAMESPACE);
-<a class="jxr_linenumber" name="152" href="#152">152</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="153" href="#153">153</a>         hbaseConf.setInt(HBASE_CLIENT_RETRIES_NUMBER, 3);
-<a class="jxr_linenumber" name="154" href="#154">154</a>         tm = HBaseTransactionManager.builder(hbaseOmidClientConf).build();
-<a class="jxr_linenumber" name="155" href="#155">155</a>         LOG.info(<span class="jxr_string">"===================== TM Started ========================="</span>);
-<a class="jxr_linenumber" name="156" href="#156">156</a>     }
-<a class="jxr_linenumber" name="157" href="#157">157</a> 
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.HConstants.HBASE_CLIENT_RETRIES_NUMBER;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_CF_NAME;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConnType.HA;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.RetryPolicy;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.CuratorFramework;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.CuratorFrameworkFactory;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.recipes.cache.NodeCache;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.framework.recipes.cache.NodeCacheListener;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.curator.retry.ExponentialBackoffRetry;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.LeaseManagement;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.PausableLeaseManager;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestEndToEndScenariosWithHA.html">TestEndToEndScenariosWithHA</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TEST_LEASE_PERIOD_MS = 5_000;
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CURRENT_TSO_PATH = <span class="jxr_string">"/CURRENT_TSO_PATH"</span>;
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_LEASE_PATH = <span class="jxr_string">"/TSO_LEASE_PATH"</span>;
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NAMESPACE = <span class="jxr_string">"omid"</span>;
+<a class="jxr_linenumber" name="66" href="#66">66</a>  
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestEndToEndScenariosWithHA.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier1 = Bytes.toBytes(<span class="jxr_string">"test-q1"</span>);
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier2 = Bytes.toBytes(<span class="jxr_string">"test-q2l"</span>);
+<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row2 = Bytes.toBytes(<span class="jxr_string">"row2"</span>);
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] initialData = Bytes.toBytes(<span class="jxr_string">"testWrite-0"</span>);
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1_q1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1-q1"</span>);
+<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1_q2 = Bytes.toBytes(<span class="jxr_string">"testWrite-1-q2"</span>);
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data2_q1 = Bytes.toBytes(<span class="jxr_string">"testWrite-2-q1"</span>);
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data2_q2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2-q2"</span>);
+<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO1_PORT = 2223;
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO2_PORT = 4321;
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> CountDownLatch barrierTillTSOAddressPublication;
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> CuratorFramework zkClient;
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> TSOServer tso1;
+<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">private</strong> TSOServer tso2;
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PausableLeaseManager.html">PausableLeaseManager</a> leaseManager1;
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">private</strong> TransactionManager tm;
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>      @BeforeMethod(alwaysRun = <strong class="jxr_keyword">true</strong>, timeOut = 30_000)
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setup() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="94" href="#94">94</a>          <em class="jxr_comment">// Get the zkConnection string from minicluster</em>
+<a class="jxr_linenumber" name="95" href="#95">95</a>          String zkConnection = <span class="jxr_string">"localhost:"</span> + hBaseUtils.getZkCluster().getClientPort();
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>          zkClient = provideInitializedZookeeperClient(zkConnection);
+<a class="jxr_linenumber" name="98" href="#98">98</a>  
+<a class="jxr_linenumber" name="99" href="#99">99</a>          <em class="jxr_comment">// Synchronize TSO start</em>
+<a class="jxr_linenumber" name="100" href="#100">100</a>         barrierTillTSOAddressPublication = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">final</strong> NodeCache currentTSOZNode = <strong class="jxr_keyword">new</strong> NodeCache(zkClient, CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="102" href="#102">102</a>         currentTSOZNode.getListenable().addListener(<strong class="jxr_keyword">new</strong> NodeCacheListener() {
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>             @Override
+<a class="jxr_linenumber" name="105" href="#105">105</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> nodeChanged() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="106" href="#106">106</a>                 byte[] currentTSOAndEpochAsBytes = currentTSOZNode.getCurrentData().getData();
+<a class="jxr_linenumber" name="107" href="#107">107</a>                 String currentTSOAndEpoch = <strong class="jxr_keyword">new</strong> String(currentTSOAndEpochAsBytes, Charsets.UTF_8);
+<a class="jxr_linenumber" name="108" href="#108">108</a>                 <strong class="jxr_keyword">if</strong> (currentTSOAndEpoch.endsWith(<span class="jxr_string">"#0"</span>)) { <em class="jxr_comment">// Wait till a TSO instance publishes the epoch</em>
+<a class="jxr_linenumber" name="109" href="#109">109</a>                     barrierTillTSOAddressPublication.countDown();
+<a class="jxr_linenumber" name="110" href="#110">110</a>                 }
+<a class="jxr_linenumber" name="111" href="#111">111</a>             }
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>         });
+<a class="jxr_linenumber" name="114" href="#114">114</a>         currentTSOZNode.start(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a>         <em class="jxr_comment">// Configure TSO 1</em>
+<a class="jxr_linenumber" name="117" href="#117">117</a>         TSOServerConfig config1 = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="118" href="#118">118</a>         config1.setPort(TSO1_PORT);
+<a class="jxr_linenumber" name="119" href="#119">119</a>         config1.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="120" href="#120">120</a>         config1.setLeaseModule(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestHALeaseManagementModule.html">TestHALeaseManagementModule</a>(TEST_LEASE_PERIOD_MS, TSO_LEASE_PATH, CURRENT_TSO_PATH, zkConnection, NAMESPACE));
+<a class="jxr_linenumber" name="121" href="#121">121</a>         Injector injector1 = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestTSOModule.html">TestTSOModule</a>(hbaseConf, config1));
+<a class="jxr_linenumber" name="122" href="#122">122</a>         LOG.info(<span class="jxr_string">"===================== Starting TSO 1 ====================="</span>);
+<a class="jxr_linenumber" name="123" href="#123">123</a>         tso1 = injector1.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="124" href="#124">124</a>         leaseManager1 = (PausableLeaseManager) injector1.getInstance(LeaseManagement.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="125" href="#125">125</a>         tso1.startAndWait();
+<a class="jxr_linenumber" name="126" href="#126">126</a>         TestUtils.waitForSocketListening(<span class="jxr_string">"localhost"</span>, TSO1_PORT, 100);
+<a class="jxr_linenumber" name="127" href="#127">127</a>         LOG.info(<span class="jxr_string">"================ Finished loading TSO 1 =================="</span>);
+<a class="jxr_linenumber" name="128" href="#128">128</a> 
+<a class="jxr_linenumber" name="129" href="#129">129</a>         <em class="jxr_comment">// Configure TSO 2</em>
+<a class="jxr_linenumber" name="130" href="#130">130</a>         TSOServerConfig config2 = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="131" href="#131">131</a>         config2.setPort(TSO2_PORT);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         config2.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="133" href="#133">133</a>         config2.setLeaseModule(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestHALeaseManagementModule.html">TestHALeaseManagementModule</a>(TEST_LEASE_PERIOD_MS, TSO_LEASE_PATH, CURRENT_TSO_PATH, zkConnection, NAMESPACE));
+<a class="jxr_linenumber" name="134" href="#134">134</a>         Injector injector2 = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TestTSOModule.html">TestTSOModule</a>(hbaseConf, config2));
+<a class="jxr_linenumber" name="135" href="#135">135</a>         LOG.info(<span class="jxr_string">"===================== Starting TSO 2 ====================="</span>);
+<a class="jxr_linenumber" name="136" href="#136">136</a>         tso2 = injector2.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="137" href="#137">137</a>         injector2.getInstance(LeaseManagement.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="138" href="#138">138</a>         tso2.startAndWait();
+<a class="jxr_linenumber" name="139" href="#139">139</a>         <em class="jxr_comment">// Don't do this here: TestUtils.waitForSocketListening("localhost", 4321, 100);</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a>         LOG.info(<span class="jxr_string">"================ Finished loading TSO 2 =================="</span>);
+<a class="jxr_linenumber" name="141" href="#141">141</a> 
+<a class="jxr_linenumber" name="142" href="#142">142</a>         <em class="jxr_comment">// Wait till the master TSO is up</em>
+<a class="jxr_linenumber" name="143" href="#143">143</a>         barrierTillTSOAddressPublication.await();
+<a class="jxr_linenumber" name="144" href="#144">144</a>         currentTSOZNode.close();
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>         <em class="jxr_comment">// Configure HBase TM</em>
+<a class="jxr_linenumber" name="147" href="#147">147</a>         LOG.info(<span class="jxr_string">"===================== Starting TM ====================="</span>);
+<a class="jxr_linenumber" name="148" href="#148">148</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="149" href="#149">149</a>         hbaseOmidClientConf.setConnectionType(HA);
+<a class="jxr_linenumber" name="150" href="#150">150</a>         hbaseOmidClientConf.setConnectionString(zkConnection);
+<a class="jxr_linenumber" name="151" href="#151">151</a>         hbaseOmidClientConf.getOmidClientConfiguration().setZkCurrentTsoPath(CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="152" href="#152">152</a>         hbaseOmidClientConf.getOmidClientConfiguration().setZkNamespace(NAMESPACE);
+<a class="jxr_linenumber" name="153" href="#153">153</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="154" href="#154">154</a>         hbaseConf.setInt(HBASE_CLIENT_RETRIES_NUMBER, 3);
+<a class="jxr_linenumber" name="155" href="#155">155</a>         tm = HBaseTransactionManager.builder(hbaseOmidClientConf).build();
+<a class="jxr_linenumber" name="156" href="#156">156</a>         LOG.info(<span class="jxr_string">"===================== TM Started ========================="</span>);
+<a class="jxr_linenumber" name="157" href="#157">157</a>     }
 <a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>     @AfterMethod(alwaysRun = <strong class="jxr_keyword">true</strong>, timeOut = 60_000)
-<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> cleanup() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="161" href="#161">161</a>         LOG.info(<span class="jxr_string">"Cleanup"</span>);
-<a class="jxr_linenumber" name="162" href="#162">162</a>         HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
-<a class="jxr_linenumber" name="163" href="#163">163</a>         deleteTable(admin, TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME));
-<a class="jxr_linenumber" name="164" href="#164">164</a>         hBaseUtils.createTable(Bytes.toBytes(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME),
-<a class="jxr_linenumber" name="165" href="#165">165</a>                                <strong class="jxr_keyword">new</strong> byte[][]{DEFAULT_TIMESTAMP_STORAGE_CF_NAME.getBytes()},
-<a class="jxr_linenumber" name="166" href="#166">166</a>                                Integer.MAX_VALUE);
-<a class="jxr_linenumber" name="167" href="#167">167</a>         tso1.stopAndWait();
-<a class="jxr_linenumber" name="168" href="#168">168</a>         TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, TSO1_PORT, 100);
-<a class="jxr_linenumber" name="169" href="#169">169</a>         tso2.stopAndWait();
-<a class="jxr_linenumber" name="170" href="#170">170</a>         TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, TSO2_PORT, 100);
-<a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>         zkClient.delete().forPath(TSO_LEASE_PATH);
-<a class="jxr_linenumber" name="173" href="#173">173</a>         LOG.info(<span class="jxr_string">"ZKPath {} deleted"</span>, TSO_LEASE_PATH);
-<a class="jxr_linenumber" name="174" href="#174">174</a>         zkClient.delete().forPath(CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="175" href="#175">175</a>         LOG.info(<span class="jxr_string">"ZKPaths {} deleted"</span>, CURRENT_TSO_PATH);
-<a class="jxr_linenumber" name="176" href="#176">176</a> 
-<a class="jxr_linenumber" name="177" href="#177">177</a>         zkClient.close();
-<a class="jxr_linenumber" name="178" href="#178">178</a>     }
-<a class="jxr_linenumber" name="179" href="#179">179</a> 
-<a class="jxr_linenumber" name="180" href="#180">180</a>     <em class="jxr_comment">//</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a>     <em class="jxr_comment">// TSO 1 is MASTER &amp; TSO 2 is BACKUP</em>
-<a class="jxr_linenumber" name="182" href="#182">182</a>     <em class="jxr_comment">// Setup: TX 0 -&gt; Add initial data to cells R1C1 (v0) &amp; R2C2 (v0)</em>
-<a class="jxr_linenumber" name="183" href="#183">183</a>     <em class="jxr_comment">// TX 1 starts (TSO1)</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a>     <em class="jxr_comment">// TX 1 modifies cells R1C1 &amp; R2C2 (v1)</em>
-<a class="jxr_linenumber" name="185" href="#185">185</a>     <em class="jxr_comment">// Interleaved Read TX -IR TX- starts (TSO1)</em>
-<a class="jxr_linenumber" name="186" href="#186">186</a>     <em class="jxr_comment">// TSO 1 PAUSES -&gt; TSO 2 becomes MASTER</em>
-<a class="jxr_linenumber" name="187" href="#187">187</a>     <em class="jxr_comment">// IR TX reads R1C1 -&gt; should get v0</em>
-<a class="jxr_linenumber" name="188" href="#188">188</a>     <em class="jxr_comment">// TX 1 tries to commit -&gt; should abort because was started in TSO 1</em>
-<a class="jxr_linenumber" name="189" href="#189">189</a>     <em class="jxr_comment">// IR TX reads R2C2 -&gt; should get v0</em>
-<a class="jxr_linenumber" name="190" href="#190">190</a>     <em class="jxr_comment">// IR TX tries to commit -&gt; should abort because was started in TSO 1</em>
-<a class="jxr_linenumber" name="191" href="#191">191</a>     <em class="jxr_comment">// End of Test state: R1C1 &amp; R2C2 (v0)</em>
-<a class="jxr_linenumber" name="192" href="#192">192</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="193" href="#193">193</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScenario1() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="194" href="#194">194</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="195" href="#195">195</a> 
-<a class="jxr_linenumber" name="196" href="#196">196</a>             <em class="jxr_comment">// Write initial values for the test</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a>             HBaseTransaction tx0 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="198" href="#198">198</a>             <strong class="jxr_keyword">long</strong> initialEpoch = tx0.getEpoch();
-<a class="jxr_linenumber" name="199" href="#199">199</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing initial values for cells ({}) "</span>, tx0, Bytes.toString(initialData));
-<a class="jxr_linenumber" name="200" href="#200">200</a>             Put putInitialDataRow1 = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="201" href="#201">201</a>             putInitialDataRow1.add(TEST_FAMILY.getBytes(), qualifier1, initialData);
-<a class="jxr_linenumber" name="202" href="#202">202</a>             txTable.put(tx0, putInitialDataRow1);
-<a class="jxr_linenumber" name="203" href="#203">203</a>             Put putInitialDataRow2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="204" href="#204">204</a>             putInitialDataRow2.add(TEST_FAMILY.getBytes(), qualifier2, initialData);
-<a class="jxr_linenumber" name="205" href="#205">205</a>             txTable.put(tx0, putInitialDataRow2);
-<a class="jxr_linenumber" name="206" href="#206">206</a>             tm.commit(tx0);
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>             <em class="jxr_comment">// Initial checks</em>
-<a class="jxr_linenumber" name="209" href="#209">209</a>             checkRowValues(txTable, initialData, initialData);
-<a class="jxr_linenumber" name="210" href="#210">210</a> 
-<a class="jxr_linenumber" name="211" href="#211">211</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="212" href="#212">212</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing values for cells ({}, {}) "</span>, tx1, Bytes.toString(data1_q1),
-<a class="jxr_linenumber" name="213" href="#213">213</a>                      Bytes.toString(data1_q2));
-<a class="jxr_linenumber" name="214" href="#214">214</a>             Put putData1R1Q1 = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="215" href="#215">215</a>             putData1R1Q1.add(TEST_FAMILY.getBytes(), qualifier1, data1_q1);
-<a class="jxr_linenumber" name="216" href="#216">216</a>             txTable.put(tx1, putData1R1Q1);
-<a class="jxr_linenumber" name="217" href="#217">217</a>             Put putData1R2Q2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="218" href="#218">218</a>             putData1R2Q2.add(TEST_FAMILY.getBytes(), qualifier2, data1_q2);
-<a class="jxr_linenumber" name="219" href="#219">219</a>             txTable.put(tx1, putData1R2Q2);
-<a class="jxr_linenumber" name="220" href="#220">220</a> 
-<a class="jxr_linenumber" name="221" href="#221">221</a>             Transaction interleavedReadTx = tm.begin();
-<a class="jxr_linenumber" name="222" href="#222">222</a> 
-<a class="jxr_linenumber" name="223" href="#223">223</a>             LOG.info(<span class="jxr_string">"Starting Interleaving Read Tx {} for checking cell values"</span>, interleavedReadTx.getTransactionId());
-<a class="jxr_linenumber" name="224" href="#224">224</a> 
-<a class="jxr_linenumber" name="225" href="#225">225</a>             <em class="jxr_comment">// Simulate a GC pause to change mastership (should throw a ServiceUnavailable exception)</em>
-<a class="jxr_linenumber" name="226" href="#226">226</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>     @AfterMethod(alwaysRun = <strong class="jxr_keyword">true</strong>, timeOut = 60_000)
+<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> cleanup() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="162" href="#162">162</a>         LOG.info(<span class="jxr_string">"Cleanup"</span>);
+<a class="jxr_linenumber" name="163" href="#163">163</a>         HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
+<a class="jxr_linenumber" name="164" href="#164">164</a>         deleteTable(admin, TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME));
+<a class="jxr_linenumber" name="165" href="#165">165</a>         hBaseUtils.createTable(TableName.valueOf((DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME)),
+<a class="jxr_linenumber" name="166" href="#166">166</a>                                <strong class="jxr_keyword">new</strong> byte[][]{DEFAULT_TIMESTAMP_STORAGE_CF_NAME.getBytes()},
+<a class="jxr_linenumber" name="167" href="#167">167</a>                                Integer.MAX_VALUE);
+<a class="jxr_linenumber" name="168" href="#168">168</a>         tso1.stopAndWait();
+<a class="jxr_linenumber" name="169" href="#169">169</a>         TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, TSO1_PORT, 100);
+<a class="jxr_linenumber" name="170" href="#170">170</a>         tso2.stopAndWait();
+<a class="jxr_linenumber" name="171" href="#171">171</a>         TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, TSO2_PORT, 100);
+<a class="jxr_linenumber" name="172" href="#172">172</a> 
+<a class="jxr_linenumber" name="173" href="#173">173</a>         zkClient.delete().forPath(TSO_LEASE_PATH);
+<a class="jxr_linenumber" name="174" href="#174">174</a>         LOG.info(<span class="jxr_string">"ZKPath {} deleted"</span>, TSO_LEASE_PATH);
+<a class="jxr_linenumber" name="175" href="#175">175</a>         zkClient.delete().forPath(CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="176" href="#176">176</a>         LOG.info(<span class="jxr_string">"ZKPaths {} deleted"</span>, CURRENT_TSO_PATH);
+<a class="jxr_linenumber" name="177" href="#177">177</a> 
+<a class="jxr_linenumber" name="178" href="#178">178</a>         zkClient.close();
+<a class="jxr_linenumber" name="179" href="#179">179</a>     }
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>     <em class="jxr_comment">//</em>
+<a class="jxr_linenumber" name="182" href="#182">182</a>     <em class="jxr_comment">// TSO 1 is MASTER &amp; TSO 2 is BACKUP</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a>     <em class="jxr_comment">// Setup: TX 0 -&gt; Add initial data to cells R1C1 (v0) &amp; R2C2 (v0)</em>
+<a class="jxr_linenumber" name="184" href="#184">184</a>     <em class="jxr_comment">// TX 1 starts (TSO1)</em>
+<a class="jxr_linenumber" name="185" href="#185">185</a>     <em class="jxr_comment">// TX 1 modifies cells R1C1 &amp; R2C2 (v1)</em>
+<a class="jxr_linenumber" name="186" href="#186">186</a>     <em class="jxr_comment">// Interleaved Read TX -IR TX- starts (TSO1)</em>
+<a class="jxr_linenumber" name="187" href="#187">187</a>     <em class="jxr_comment">// TSO 1 PAUSES -&gt; TSO 2 becomes MASTER</em>
+<a class="jxr_linenumber" name="188" href="#188">188</a>     <em class="jxr_comment">// IR TX reads R1C1 -&gt; should get v0</em>
+<a class="jxr_linenumber" name="189" href="#189">189</a>     <em class="jxr_comment">// TX 1 tries to commit -&gt; should abort because was started in TSO 1</em>
+<a class="jxr_linenumber" name="190" href="#190">190</a>     <em class="jxr_comment">// IR TX reads R2C2 -&gt; should get v0</em>
+<a class="jxr_linenumber" name="191" href="#191">191</a>     <em class="jxr_comment">// IR TX tries to commit -&gt; should abort because was started in TSO 1</em>
+<a class="jxr_linenumber" name="192" href="#192">192</a>     <em class="jxr_comment">// End of Test state: R1C1 &amp; R2C2 (v0)</em>
+<a class="jxr_linenumber" name="193" href="#193">193</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="194" href="#194">194</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScenario1() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="195" href="#195">195</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
+<a class="jxr_linenumber" name="196" href="#196">196</a> 
+<a class="jxr_linenumber" name="197" href="#197">197</a>             <em class="jxr_comment">// Write initial values for the test</em>
+<a class="jxr_linenumber" name="198" href="#198">198</a>             HBaseTransaction tx0 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="199" href="#199">199</a>             <strong class="jxr_keyword">long</strong> initialEpoch = tx0.getEpoch();
+<a class="jxr_linenumber" name="200" href="#200">200</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing initial values for cells ({}) "</span>, tx0, Bytes.toString(initialData));
+<a class="jxr_linenumber" name="201" href="#201">201</a>             Put putInitialDataRow1 = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="202" href="#202">202</a>             putInitialDataRow1.addColumn(TEST_FAMILY.getBytes(), qualifier1, initialData);
+<a class="jxr_linenumber" name="203" href="#203">203</a>             txTable.put(tx0, putInitialDataRow1);
+<a class="jxr_linenumber" name="204" href="#204">204</a>             Put putInitialDataRow2 = <strong class="jxr_keyword">new</strong> Put(row2);
+<a class="jxr_linenumber" name="205" href="#205">205</a>             putInitialDataRow2.addColumn(TEST_FAMILY.getBytes(), qualifier2, initialData);
+<a class="jxr_linenumber" name="206" href="#206">206</a>             txTable.put(tx0, putInitialDataRow2);
+<a class="jxr_linenumber" name="207" href="#207">207</a>             tm.commit(tx0);
+<a class="jxr_linenumber" name="208" href="#208">208</a> 
+<a class="jxr_linenumber" name="209" href="#209">209</a>             <em class="jxr_comment">// Initial checks</em>
+<a class="jxr_linenumber" name="210" href="#210">210</a>             checkRowValues(txTable, initialData, initialData);
+<a class="jxr_linenumber" name="211" href="#211">211</a> 
+<a class="jxr_linenumber" name="212" href="#212">212</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="213" href="#213">213</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing values for cells ({}, {}) "</span>, tx1, Bytes.toString(data1_q1),
+<a class="jxr_linenumber" name="214" href="#214">214</a>                      Bytes.toString(data1_q2));
+<a class="jxr_linenumber" name="215" href="#215">215</a>             Put putData1R1Q1 = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="216" href="#216">216</a>             putData1R1Q1.addColumn(TEST_FAMILY.getBytes(), qualifier1, data1_q1);
+<a class="jxr_linenumber" name="217" href="#217">217</a>             txTable.put(tx1, putData1R1Q1);
+<a class="jxr_linenumber" name="218" href="#218">218</a>             Put putData1R2Q2 = <strong class="jxr_keyword">new</strong> Put(row2);
+<a class="jxr_linenumber" name="219" href="#219">219</a>             putData1R2Q2.addColumn(TEST_FAMILY.getBytes(), qualifier2, data1_q2);
+<a class="jxr_linenumber" name="220" href="#220">220</a>             txTable.put(tx1, putData1R2Q2);
+<a class="jxr_linenumber" name="221" href="#221">221</a> 
+<a class="jxr_linenumber" name="222" href="#222">222</a>             Transaction interleavedReadTx = tm.begin();
+<a class="jxr_linenumber" name="223" href="#223">223</a> 
+<a class="jxr_linenumber" name="224" href="#224">224</a>             LOG.info(<span class="jxr_string">"Starting Interleaving Read Tx {} for checking cell values"</span>, interleavedReadTx.getTransactionId());
+<a class="jxr_linenumber" name="225" href="#225">225</a> 
+<a class="jxr_linenumber" name="226" href="#226">226</a>             <em class="jxr_comment">// Simulate a GC pause to change mastership (should throw a ServiceUnavailable exception)</em>
 <a class="jxr_linenumber" name="227" href="#227">227</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
-<a class="jxr_linenumber" name="228" href="#228">228</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++ PAUSING TSO 1 +++++++++++++++++++"</span>);
-<a class="jxr_linenumber" name="229" href="#229">229</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
+<a class="jxr_linenumber" name="228" href="#228">228</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
+<a class="jxr_linenumber" name="229" href="#229">229</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++ PAUSING TSO 1 +++++++++++++++++++"</span>);
 <a class="jxr_linenumber" name="230" href="#230">230</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
-<a class="jxr_linenumber" name="231" href="#231">231</a>             leaseManager1.pausedInStillInLeasePeriod();
-<a class="jxr_linenumber" name="232" href="#232">232</a> 
-<a class="jxr_linenumber" name="233" href="#233">233</a>             <em class="jxr_comment">// Read interleaved and check the values writen by tx 1</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>             Get getRow1 = <strong class="jxr_keyword">new</strong> Get(row1).setMaxVersions(1);
-<a class="jxr_linenumber" name="235" href="#235">235</a>             getRow1.addColumn(TEST_FAMILY.getBytes(), qualifier1);
-<a class="jxr_linenumber" name="236" href="#236">236</a>             Result r = txTable.get(interleavedReadTx, getRow1);
-<a class="jxr_linenumber" name="237" href="#237">237</a>             assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier1), initialData,
-<a class="jxr_linenumber" name="238" href="#238">238</a>                          <span class="jxr_string">"Unexpected value for SI read R1Q1"</span> + interleavedReadTx + <span class="jxr_string">": "</span>
-<a class="jxr_linenumber" name="239" href="#239">239</a>                                  + Bytes.toString(r.getValue(TEST_FAMILY.getBytes(), qualifier1)));
-<a class="jxr_linenumber" name="240" href="#240">240</a> 
-<a class="jxr_linenumber" name="241" href="#241">241</a>             <em class="jxr_comment">// Try to commit, but it should abort due to the change in mastership</em>
-<a class="jxr_linenumber" name="242" href="#242">242</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="243" href="#243">243</a>                 tm.commit(tx1);
-<a class="jxr_linenumber" name="244" href="#244">244</a>                 fail();
-<a class="jxr_linenumber" name="245" href="#245">245</a>             } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
-<a class="jxr_linenumber" name="246" href="#246">246</a>                 <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="247" href="#247">247</a>                 LOG.info(<span class="jxr_string">"Rollback cause for Tx {}: "</span>, tx1, e.getCause());
-<a class="jxr_linenumber" name="248" href="#248">248</a>                 assertEquals(tx1.getStatus(), Transaction.Status.ROLLEDBACK);
-<a class="jxr_linenumber" name="249" href="#249">249</a>                 assertEquals(tx1.getEpoch(), initialEpoch);
-<a class="jxr_linenumber" name="250" href="#250">250</a>             }
-<a class="jxr_linenumber" name="251" href="#251">251</a> 
-<a class="jxr_linenumber" name="252" href="#252">252</a>             <em class="jxr_comment">// Read interleaved and check the values written by tx 1</em>
-<a class="jxr_linenumber" name="253" href="#253">253</a>             Get getRow2 = <strong class="jxr_keyword">new</strong> Get(row2).setMaxVersions(1);
-<a class="jxr_linenumber" name="254" href="#254">254</a>             r = txTable.get(interleavedReadTx, getRow2);
-<a class="jxr_linenumber" name="255" href="#255">255</a>             assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier2), initialData,
-<a class="jxr_linenumber" name="256" href="#256">256</a>                          <span class="jxr_string">"Unexpected value for SI read R2Q2"</span> + interleavedReadTx + <span class="jxr_string">": "</span>
-<a class="jxr_linenumber" name="257" href="#257">257</a>                                  + Bytes.toString(r.getValue(TEST_FAMILY.getBytes(), qualifier2)));
-<a class="jxr_linenumber" name="258" href="#258">258</a> 
-<a class="jxr_linenumber" name="259" href="#259">259</a>             <em class="jxr_comment">// Should commit because its a read only tx does not have to contact the TSO</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a>             tm.commit(interleavedReadTx);
-<a class="jxr_linenumber" name="261" href="#261">261</a>             assertEquals(interleavedReadTx.getEpoch(), initialEpoch);
-<a class="jxr_linenumber" name="262" href="#262">262</a>             assertEquals(interleavedReadTx.getStatus(), Transaction.Status.COMMITTED_RO);
-<a class="jxr_linenumber" name="263" href="#263">263</a> 
-<a class="jxr_linenumber" name="264" href="#264">264</a>             LOG.info(<span class="jxr_string">"Wait till the client is informed about the connection parameters of the new TSO"</span>);
-<a class="jxr_linenumber" name="265" href="#265">265</a>             TestUtils.waitForSocketListening(<span class="jxr_string">"localhost"</span>, TSO2_PORT, 100);
-<a class="jxr_linenumber" name="266" href="#266">266</a> 
-<a class="jxr_linenumber" name="267" href="#267">267</a>             checkRowValues(txTable, initialData, initialData);
-<a class="jxr_linenumber" name="268" href="#268">268</a> 
-<a class="jxr_linenumber" name="269" href="#269">269</a>             <em class="jxr_comment">// Need to resume to let other test progress</em>
-<a class="jxr_linenumber" name="270" href="#270">270</a>             leaseManager1.resume();
-<a class="jxr_linenumber" name="271" href="#271">271</a> 
-<a class="jxr_linenumber" name="272" href="#272">272</a>         }
-<a class="jxr_linenumber" name="273" href="#273">273</a> 
-<a class="jxr_linenumber" name="274" href="#274">274</a>     }
-<a class="jxr_linenumber" name="275" href="#275">275</a> 
-<a class="jxr_linenumber" name="276" href="#276">276</a>     <em class="jxr_comment">//</em>
-<a class="jxr_linenumber" name="277" href="#277">277</a>     <em class="jxr_comment">// TSO 1 is MASTER &amp; TSO 2 is BACKUP</em>
-<a class="jxr_linenumber" name="278" href="#278">278</a>     <em class="jxr_comment">// Setup: TX 0 -&gt; Add initial data to cells R1C1 (v0) &amp; R2C2 (v0)</em>
-<a class="jxr_linenumber" name="279" href="#279">279</a>     <em class="jxr_comment">// TX 1 starts (TSO1)</em>
-<a class="jxr_linenumber" name="280" href="#280">280</a>     <em class="jxr_comment">// TX 1 modifies cells R1C1 &amp; R2C2 (v1)</em>
-<a class="jxr_linenumber" name="281" href="#281">281</a>     <em class="jxr_comment">// TSO 1 is KILLED -&gt; TSO 2 becomes MASTER</em>
-<a class="jxr_linenumber" name="282" href="#282">282</a>     <em class="jxr_comment">// TX 1 tries to commit -&gt; should abort because was started in TSO 1</em>
-<a class="jxr_linenumber" name="283" href="#283">283</a>     <em class="jxr_comment">// TX 2 starts (TSO1)</em>
-<a class="jxr_linenumber" name="284" href="#284">284</a>     <em class="jxr_comment">// TX 2 reads R1C1 -&gt; should get v0</em>
-<a class="jxr_linenumber" name="285" href="#285">285</a>     <em class="jxr_comment">// TX 2 reads R2C2 -&gt; should get v0</em>
-<a class="jxr_linenumber" name="286" href="#286">286</a>     <em class="jxr_comment">// TX 2 modifies cells R1C1 &amp; R2C2 (v2)</em>
-<a class="jxr_linenumber" name="287" href="#287">287</a>     <em class="jxr_comment">// TX 2 commits</em>
-<a class="jxr_linenumber" name="288" href="#288">288</a>     <em class="jxr_comment">// End of Test state: R1C1 &amp; R2C2 (v2)</em>
-<a class="jxr_linenumber" name="289" href="#289">289</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="290" href="#290">290</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScenario2() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="291" href="#291">291</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="292" href="#292">292</a> 
-<a class="jxr_linenumber" name="293" href="#293">293</a>             <em class="jxr_comment">// Write initial values for the test</em>
-<a class="jxr_linenumber" name="294" href="#294">294</a>             HBaseTransaction tx0 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="295" href="#295">295</a>             <strong class="jxr_keyword">long</strong> initialEpoch = tx0.getEpoch();
-<a class="jxr_linenumber" name="296" href="#296">296</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing initial values for cells ({}) "</span>, tx0, Bytes.toString(initialData));
-<a class="jxr_linenumber" name="297" href="#297">297</a>             Put putInitialDataRow1 = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="298" href="#298">298</a>             putInitialDataRow1.add(TEST_FAMILY.getBytes(), qualifier1, initialData);
-<a class="jxr_linenumber" name="299" href="#299">299</a>             txTable.put(tx0, putInitialDataRow1);
-<a class="jxr_linenumber" name="300" href="#300">300</a>             Put putInitialDataRow2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="301" href="#301">301</a>             putInitialDataRow2.add(TEST_FAMILY.getBytes(), qualifier2, initialData);
-<a class="jxr_linenumber" name="302" href="#302">302</a>             txTable.put(tx0, putInitialDataRow2);
-<a class="jxr_linenumber" name="303" href="#303">303</a>             tm.commit(tx0);
-<a class="jxr_linenumber" name="304" href="#304">304</a> 
-<a class="jxr_linenumber" name="305" href="#305">305</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="306" href="#306">306</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing values for cells ({}, {}) "</span>, tx1, Bytes.toString(data1_q1),
-<a class="jxr_linenumber" name="307" href="#307">307</a>                      Bytes.toString(data1_q2));
-<a class="jxr_linenumber" name="308" href="#308">308</a>             Put putData1R1Q1 = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="309" href="#309">309</a>             putData1R1Q1.add(TEST_FAMILY.getBytes(), qualifier1, data1_q1);
-<a class="jxr_linenumber" name="310" href="#310">310</a>             txTable.put(tx1, putData1R1Q1);
-<a class="jxr_linenumber" name="311" href="#311">311</a>             Put putData1R2Q2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="312" href="#312">312</a>             putData1R2Q2.add(TEST_FAMILY.getBytes(), qualifier2, data1_q2);
-<a class="jxr_linenumber" name="313" href="#313">313</a>             txTable.put(tx1, putData1R2Q2);
-<a class="jxr_linenumber" name="314" href="#314">314</a> 
-<a class="jxr_linenumber" name="315" href="#315">315</a>             <em class="jxr_comment">// Provoke change in mastership (should throw a Connection exception)</em>
-<a class="jxr_linenumber" name="316" href="#316">316</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
+<a class="jxr_linenumber" name="231" href="#231">231</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
+<a class="jxr_linenumber" name="232" href="#232">232</a>             leaseManager1.pausedInStillInLeasePeriod();
+<a class="jxr_linenumber" name="233" href="#233">233</a> 
+<a class="jxr_linenumber" name="234" href="#234">234</a>             <em class="jxr_comment">// Read interleaved and check the values writen by tx 1</em>
+<a class="jxr_linenumber" name="235" href="#235">235</a>             Get getRow1 = <strong class="jxr_keyword">new</strong> Get(row1).setMaxVersions(1);
+<a class="jxr_linenumber" name="236" href="#236">236</a>             getRow1.addColumn(TEST_FAMILY.getBytes(), qualifier1);
+<a class="jxr_linenumber" name="237" href="#237">237</a>             Result r = txTable.get(interleavedReadTx, getRow1);
+<a class="jxr_linenumber" name="238" href="#238">238</a>             assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier1), initialData,
+<a class="jxr_linenumber" name="239" href="#239">239</a>                          <span class="jxr_string">"Unexpected value for SI read R1Q1"</span> + interleavedReadTx + <span class="jxr_string">": "</span>
+<a class="jxr_linenumber" name="240" href="#240">240</a>                                  + Bytes.toString(r.getValue(TEST_FAMILY.getBytes(), qualifier1)));
+<a class="jxr_linenumber" name="241" href="#241">241</a> 
+<a class="jxr_linenumber" name="242" href="#242">242</a>             <em class="jxr_comment">// Try to commit, but it should abort due to the change in mastership</em>
+<a class="jxr_linenumber" name="243" href="#243">243</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="244" href="#244">244</a>                 tm.commit(tx1);
+<a class="jxr_linenumber" name="245" href="#245">245</a>                 fail();
+<a class="jxr_linenumber" name="246" href="#246">246</a>             } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="247" href="#247">247</a>                 <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="248" href="#248">248</a>                 LOG.info(<span class="jxr_string">"Rollback cause for Tx {}: "</span>, tx1, e.getCause());
+<a class="jxr_linenumber" name="249" href="#249">249</a>                 assertEquals(tx1.getStatus(), Transaction.Status.ROLLEDBACK);
+<a class="jxr_linenumber" name="250" href="#250">250</a>                 assertEquals(tx1.getEpoch(), initialEpoch);
+<a class="jxr_linenumber" name="251" href="#251">251</a>             }
+<a class="jxr_linenumber" name="252" href="#252">252</a> 
+<a class="jxr_linenumber" name="253" href="#253">253</a>             <em class="jxr_comment">// Read interleaved and check the values written by tx 1</em>
+<a class="jxr_linenumber" name="254" href="#254">254</a>             Get getRow2 = <strong class="jxr_keyword">new</strong> Get(row2).setMaxVersions(1);
+<a class="jxr_linenumber" name="255" href="#255">255</a>             r = txTable.get(interleavedReadTx, getRow2);
+<a class="jxr_linenumber" name="256" href="#256">256</a>             assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier2), initialData,
+<a class="jxr_linenumber" name="257" href="#257">257</a>                          <span class="jxr_string">"Unexpected value for SI read R2Q2"</span> + interleavedReadTx + <span class="jxr_string">": "</span>
+<a class="jxr_linenumber" name="258" href="#258">258</a>                                  + Bytes.toString(r.getValue(TEST_FAMILY.getBytes(), qualifier2)));
+<a class="jxr_linenumber" name="259" href="#259">259</a> 
+<a class="jxr_linenumber" name="260" href="#260">260</a>             <em class="jxr_comment">// Should commit because its a read only tx does not have to contact the TSO</em>
+<a class="jxr_linenumber" name="261" href="#261">261</a>             tm.commit(interleavedReadTx);
+<a class="jxr_linenumber" name="262" href="#262">262</a>             assertEquals(interleavedReadTx.getEpoch(), initialEpoch);
+<a class="jxr_linenumber" name="263" href="#263">263</a>             assertEquals(interleavedReadTx.getStatus(), Transaction.Status.COMMITTED_RO);
+<a class="jxr_linenumber" name="264" href="#264">264</a> 
+<a class="jxr_linenumber" name="265" href="#265">265</a>             LOG.info(<span class="jxr_string">"Wait till the client is informed about the connection parameters of the new TSO"</span>);
+<a class="jxr_linenumber" name="266" href="#266">266</a>             TestUtils.waitForSocketListening(<span class="jxr_string">"localhost"</span>, TSO2_PORT, 100);
+<a class="jxr_linenumber" name="267" href="#267">267</a> 
+<a class="jxr_linenumber" name="268" href="#268">268</a>             checkRowValues(txTable, initialData, initialData);
+<a class="jxr_linenumber" name="269" href="#269">269</a> 
+<a class="jxr_linenumber" name="270" href="#270">270</a>             <em class="jxr_comment">// Need to resume to let other test progress</em>
+<a class="jxr_linenumber" name="271" href="#271">271</a>             leaseManager1.resume();
+<a class="jxr_linenumber" name="272" href="#272">272</a> 
+<a class="jxr_linenumber" name="273" href="#273">273</a>         }
+<a class="jxr_linenumber" name="274" href="#274">274</a> 
+<a class="jxr_linenumber" name="275" href="#275">275</a>     }
+<a class="jxr_linenumber" name="276" href="#276">276</a> 
+<a class="jxr_linenumber" name="277" href="#277">277</a>     <em class="jxr_comment">//</em>
+<a class="jxr_linenumber" name="278" href="#278">278</a>     <em class="jxr_comment">// TSO 1 is MASTER &amp; TSO 2 is BACKUP</em>
+<a class="jxr_linenumber" name="279" href="#279">279</a>     <em class="jxr_comment">// Setup: TX 0 -&gt; Add initial data to cells R1C1 (v0) &amp; R2C2 (v0)</em>
+<a class="jxr_linenumber" name="280" href="#280">280</a>     <em class="jxr_comment">// TX 1 starts (TSO1)</em>
+<a class="jxr_linenumber" name="281" href="#281">281</a>     <em class="jxr_comment">// TX 1 modifies cells R1C1 &amp; R2C2 (v1)</em>
+<a class="jxr_linenumber" name="282" href="#282">282</a>     <em class="jxr_comment">// TSO 1 is KILLED -&gt; TSO 2 becomes MASTER</em>
+<a class="jxr_linenumber" name="283" href="#283">283</a>     <em class="jxr_comment">// TX 1 tries to commit -&gt; should abort because was started in TSO 1</em>
+<a class="jxr_linenumber" name="284" href="#284">284</a>     <em class="jxr_comment">// TX 2 starts (TSO1)</em>
+<a class="jxr_linenumber" name="285" href="#285">285</a>     <em class="jxr_comment">// TX 2 reads R1C1 -&gt; should get v0</em>
+<a class="jxr_linenumber" name="286" href="#286">286</a>     <em class="jxr_comment">// TX 2 reads R2C2 -&gt; should get v0</em>
+<a class="jxr_linenumber" name="287" href="#287">287</a>     <em class="jxr_comment">// TX 2 modifies cells R1C1 &amp; R2C2 (v2)</em>
+<a class="jxr_linenumber" name="288" href="#288">288</a>     <em class="jxr_comment">// TX 2 commits</em>
+<a class="jxr_linenumber" name="289" href="#289">289</a>     <em class="jxr_comment">// End of Test state: R1C1 &amp; R2C2 (v2)</em>
+<a class="jxr_linenumber" name="290" href="#290">290</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="291" href="#291">291</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScenario2() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="292" href="#292">292</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
+<a class="jxr_linenumber" name="293" href="#293">293</a> 
+<a class="jxr_linenumber" name="294" href="#294">294</a>             <em class="jxr_comment">// Write initial values for the test</em>
+<a class="jxr_linenumber" name="295" href="#295">295</a>             HBaseTransaction tx0 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="296" href="#296">296</a>             <strong class="jxr_keyword">long</strong> initialEpoch = tx0.getEpoch();
+<a class="jxr_linenumber" name="297" href="#297">297</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing initial values for cells ({}) "</span>, tx0, Bytes.toString(initialData));
+<a class="jxr_linenumber" name="298" href="#298">298</a>             Put putInitialDataRow1 = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="299" href="#299">299</a>             putInitialDataRow1.addColumn(TEST_FAMILY.getBytes(), qualifier1, initialData);
+<a class="jxr_linenumber" name="300" href="#300">300</a>             txTable.put(tx0, putInitialDataRow1);
+<a class="jxr_linenumber" name="301" href="#301">301</a>             Put putInitialDataRow2 = <strong class="jxr_keyword">new</strong> Put(row2);
+<a class="jxr_linenumber" name="302" href="#302">302</a>             putInitialDataRow2.addColumn(TEST_FAMILY.getBytes(), qualifier2, initialData);
+<a class="jxr_linenumber" name="303" href="#303">303</a>             txTable.put(tx0, putInitialDataRow2);
+<a class="jxr_linenumber" name="304" href="#304">304</a>             tm.commit(tx0);
+<a class="jxr_linenumber" name="305" href="#305">305</a> 
+<a class="jxr_linenumber" name="306" href="#306">306</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="307" href="#307">307</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing values for cells ({}, {}) "</span>, tx1, Bytes.toString(data1_q1),
+<a class="jxr_linenumber" name="308" href="#308">308</a>                      Bytes.toString(data1_q2));
+<a class="jxr_linenumber" name="309" href="#309">309</a>             Put putData1R1Q1 = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="310" href="#310">310</a>             putData1R1Q1.addColumn(TEST_FAMILY.getBytes(), qualifier1, data1_q1);
+<a class="jxr_linenumber" name="311" href="#311">311</a>             txTable.put(tx1, putData1R1Q1);
+<a class="jxr_linenumber" name="312" href="#312">312</a>             Put putData1R2Q2 = <strong class="jxr_keyword">new</strong> Put(row2);
+<a class="jxr_linenumber" name="313" href="#313">313</a>             putData1R2Q2.addColumn(TEST_FAMILY.getBytes(), qualifier2, data1_q2);
+<a class="jxr_linenumber" name="314" href="#314">314</a>             txTable.put(tx1, putData1R2Q2);
+<a class="jxr_linenumber" name="315" href="#315">315</a> 
+<a class="jxr_linenumber" name="316" href="#316">316</a>             <em class="jxr_comment">// Provoke change in mastership (should throw a Connection exception)</em>
 <a class="jxr_linenumber" name="317" href="#317">317</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
-<a class="jxr_linenumber" name="318" href="#318">318</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++ KILLING TSO 1 +++++++++++++++++++"</span>);
-<a class="jxr_linenumber" name="319" href="#319">319</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
+<a class="jxr_linenumber" name="318" href="#318">318</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
+<a class="jxr_linenumber" name="319" href="#319">319</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++ KILLING TSO 1 +++++++++++++++++++"</span>);
 <a class="jxr_linenumber" name="320" href="#320">320</a>             LOG.info(<span class="jxr_string">"++++++++++++++++++++++++++++++++++++++++++++++++++++++"</span>);
-<a class="jxr_linenumber" name="321" href="#321">321</a>             tso1.stopAndWait();
-<a class="jxr_linenumber" name="322" href="#322">322</a>             TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, TSO1_PORT, 100);
-<a class="jxr_linenumber" name="323" href="#323">323</a> 
-<a class="jxr_linenumber" name="324" href="#324">324</a>             <em class="jxr_comment">// Try to commit, but it should abort due to the change in mastership</em>
-<a class="jxr_linenumber" name="325" href="#325">325</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="326" href="#326">326</a>                 tm.commit(tx1);
-<a class="jxr_linenumber" name="327" href="#327">327</a>                 String failMsg = String.format(<span class="jxr_string">"%s should not commit. Initial epoch was: %d"</span>, tx1, initialEpoch);
-<a class="jxr_linenumber" name="328" href="#328">328</a>                 fail(failMsg);
-<a class="jxr_linenumber" name="329" href="#329">329</a>             } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
-<a class="jxr_linenumber" name="330" href="#330">330</a>                 <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="331" href="#331">331</a>                 LOG.info(<span class="jxr_string">"Rollback cause for Tx {}: "</span>, tx1, e.getCause());
-<a class="jxr_linenumber" name="332" href="#332">332</a>                 assertEquals(tx1.getStatus(), Transaction.Status.ROLLEDBACK);
-<a class="jxr_linenumber" name="333" href="#333">333</a>                 assertEquals(tx1.getEpoch(), initialEpoch);
-<a class="jxr_linenumber" name="334" href="#334">334</a>             }
-<a class="jxr_linenumber" name="335" href="#335">335</a> 
-<a class="jxr_linenumber" name="336" href="#336">336</a>             LOG.info(<span class="jxr_string">"Sleep some time till the client is informed about"</span>
-<a class="jxr_linenumber" name="337" href="#337">337</a>                              + <span class="jxr_string">"the new TSO connection parameters and how can connect"</span>);
-<a class="jxr_linenumber" name="338" href="#338">338</a>             TimeUnit.SECONDS.sleep(10 + 2);
-<a class="jxr_linenumber" name="339" href="#339">339</a> 
-<a class="jxr_linenumber" name="340" href="#340">340</a>             HBaseTransaction tx2 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="341" href="#341">341</a>             LOG.info(<span class="jxr_string">"Starting Tx {} writing values for cells ({}, {}) "</span>, tx2, Bytes.toString(data1_q1),
-<a class="jxr_linenumber" name="342" href="#342">342</a>                      Bytes.toString(data1_q2));
-<a class="jxr_linenumber" name="343" href="#343">343</a>             Get getData1R1Q1 = <strong class="jxr_keyword">new</strong> Get(row1).setMaxVersions(1);
-<a class="jxr_linenumber" name="344" href="#344">344</a>             Result r = txTable.get(tx2, getData1R1Q1);
-<a class="jxr_linenumber" name="345" href="#345">345</a>             assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier1), initialData,
-<a class="jxr_linenumber" name="346" href="#346">346</a>                          <span class="jxr_string">"Unexpected value for SI read R1Q1"</span> + tx2 + <span class="jxr_string">": "</span>
-<a class="jxr_linenumber" name="347" href="#347">347</a>                                  + Bytes.toString(r.getValue(TEST_FAMILY.getBytes(), qualifier1)));
-<a class="jxr_linenumber" name="348" href="#348">348</a>             Get getData1R2Q2 = <strong class="jxr_keyword">new</strong> Get(row2).setMaxVersions(1);
-<a class="jxr_linenumber" name="349" href="#349">349</a>             r = txTable.get(tx2, getData1R2Q2);
-<a class="jxr_linenumber" name="350" href="#350">350</a>             assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier2), initialData,
-<a class="jxr_linenumber" name="351" href="#351">351</a>                          <span class="jxr_string">"Unexpected value for SI read R1Q1"</span> + tx2 + <span class="jxr_string">": "</span>
-<a class="jxr_linenumber" name="352" href="#352">352</a>                                  + Bytes.toString(r.getValue(TEST_FAMILY.getBytes(), qualifier2)));
-<a class="jxr_linenumber" name="353" href="#353">353</a> 
-<a class="jxr_linenumber" name="354" href="#354">354</a>             Put putData2R1Q1 = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="355" href="#355">355</a>             putData2R1Q1.add(TEST_FAMILY.getBytes(), qualifier1, data2_q1);
-<a class="jxr_linenumber" name="356" href="#356">356</a>             txTable.put(tx2, putData2R1Q1);
-<a class="jxr_linenumber" name="357" href="#357">357</a>             Put putData2R2Q2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="358" href="#358">358</a>             putData2R2Q2.add(TEST_FAMILY.getBytes(), qualifier2, data2_q2);
-<a class="jxr_linenumber" name="359" href="#359">359</a>             txTable.put(tx2, putData2R2Q2);
-<a class="jxr_linenumber" name="360" href="#360">360</a>             <em class="jxr_comment">// This one should commit in the new TSO</em>
-<a class="jxr_linenumber" name="361" href="#361">361</a>             tm.commit(tx2);
-<a class="jxr_linenumber" name="362" href="#362">362</a> 
-<a class="jxr_linenumber" name="363" href="#363">363</a>             assertEquals(tx2.getStatus(), Transaction.Status.COMMITTED);
-<a class="jxr_linenumber" name="364" href="#364">364</a>             assertTrue(tx2.getEpoch() &gt; tx0.getCommitTimestamp());
-<a class="jxr_linenumber" name="365" href="#365">365</a> 
-<a class="jxr_linenumber" name="366" href="#366">366</a>             checkRowValues(txTable, data2_q1, data2_q2);
-<a class="jxr_linenumber" name="367" href="#367">367</a>         }
-<a class="jxr_linenumber" name="368" href="#368">368</a> 
-<a class="jxr_linenumber" name="369" href="#369">369</a>     }
-<a class="jxr_linenumber" name="370" href="#370">370</a> 
-<a class="jxr_linenumber" name="371" href="#371">371</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkRowValues(TTable txTable, byte[] expectedDataR1Q1, byte[] expectedDataR2Q2)
-<a class="jxr_linenumber" name="372" href="#372">372</a>             <strong class="jxr_keyword">throws</strong> IOException, Rollb

<TRUNCATED>


[29/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestTxMgrFailover.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestTxMgrFailover.html b/xref-test/org/apache/omid/transaction/TestTxMgrFailover.html
index 19d29dd..239ba59 100644
--- a/xref-test/org/apache/omid/transaction/TestTxMgrFailover.html
+++ b/xref-test/org/apache/omid/transaction/TestTxMgrFailover.html
@@ -27,44 +27,44 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTable;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.InMemoryCommitTable;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction.Status;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.ProgrammableTSOServer;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> javax.annotation.Nullable;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestTxMgrFailover.html">TestTxMgrFailover</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTxMgrFailover.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO_SERVER_PORT = 3333;
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
-<a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> TX1_ST = 1L;
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> TX1_CT = 2L;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> javax.annotation.Nullable;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.InMemoryCommitTable;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.Transaction.Status;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.ProgrammableTSOServer;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeClass;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestTxMgrFailover.html">TestTxMgrFailover</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTxMgrFailover.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="53" href="#53">53</a>  
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO_SERVER_PORT = 3333;
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> TX1_ST = 1L;
 <a class="jxr_linenumber" name="58" href="#58">58</a>  
 <a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"test-qual"</span>);
 <a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
@@ -113,14 +113,14 @@
 <a class="jxr_linenumber" name="103" href="#103">103</a>         tso.queueResponse(<strong class="jxr_keyword">new</strong> ProgrammableTSOServer.TimestampResponse(TX1_ST));
 <a class="jxr_linenumber" name="104" href="#104">104</a>         tso.queueResponse(<strong class="jxr_keyword">new</strong> ProgrammableTSOServer.AbortResponse(TX1_ST));
 <a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
+<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
 <a class="jxr_linenumber" name="107" href="#107">107</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
 <a class="jxr_linenumber" name="108" href="#108">108</a>             assertEquals(tx1.getStartTimestamp(), TX1_ST);
 <a class="jxr_linenumber" name="109" href="#109">109</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="110" href="#110">110</a>             put.add(TEST_FAMILY.getBytes(), qualifier, data1);
+<a class="jxr_linenumber" name="110" href="#110">110</a>             put.addColumn(TEST_FAMILY.getBytes(), qualifier, data1);
 <a class="jxr_linenumber" name="111" href="#111">111</a>             txTable.put(tx1, put);
-<a class="jxr_linenumber" name="112" href="#112">112</a>             assertEquals(hBaseUtils.countRows(<strong class="jxr_keyword">new</strong> HTable(hbaseConf, TEST_TABLE)), 1, <span class="jxr_string">"Rows should be 1!"</span>);
-<a class="jxr_linenumber" name="113" href="#113">113</a>             checkOperationSuccessOnCell(KeyValue.Type.Put, data1, TEST_TABLE.getBytes(), row1, TEST_FAMILY.getBytes(),
+<a class="jxr_linenumber" name="112" href="#112">112</a>             assertEquals(hBaseUtils.countRows(txTable.getHTable()), 1, <span class="jxr_string">"Rows should be 1!"</span>);
+<a class="jxr_linenumber" name="113" href="#113">113</a>             checkOperationSuccessOnCell(txTable.getHTable(), KeyValue.Type.Put, data1, TEST_TABLE.getBytes(), row1, TEST_FAMILY.getBytes(),
 <a class="jxr_linenumber" name="114" href="#114">114</a>                     qualifier);
 <a class="jxr_linenumber" name="115" href="#115">115</a> 
 <a class="jxr_linenumber" name="116" href="#116">116</a>             <strong class="jxr_keyword">try</strong> {
@@ -135,7 +135,7 @@
 <a class="jxr_linenumber" name="125" href="#125">125</a>             assertEquals(tx1.getStatus(), Status.ROLLEDBACK);
 <a class="jxr_linenumber" name="126" href="#126">126</a>             assertEquals(tx1.getCommitTimestamp(), 0);
 <a class="jxr_linenumber" name="127" href="#127">127</a>             <em class="jxr_comment">// Check the cleanup process did its job and the committed data is NOT there</em>
-<a class="jxr_linenumber" name="128" href="#128">128</a>             checkOperationSuccessOnCell(KeyValue.Type.Delete, <strong class="jxr_keyword">null</strong>, TEST_TABLE.getBytes(), row1, TEST_FAMILY.getBytes(),
+<a class="jxr_linenumber" name="128" href="#128">128</a>             checkOperationSuccessOnCell(txTable.getHTable(), KeyValue.Type.Delete, <strong class="jxr_keyword">null</strong>, TEST_TABLE.getBytes(), row1, TEST_FAMILY.getBytes(),
 <a class="jxr_linenumber" name="129" href="#129">129</a>                     qualifier);
 <a class="jxr_linenumber" name="130" href="#130">130</a>         }
 <a class="jxr_linenumber" name="131" href="#131">131</a> 
@@ -145,45 +145,46 @@
 <a class="jxr_linenumber" name="135" href="#135">135</a>     <em class="jxr_comment">// Helper methods</em>
 <a class="jxr_linenumber" name="136" href="#136">136</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
 <a class="jxr_linenumber" name="137" href="#137">137</a> 
-<a class="jxr_linenumber" name="138" href="#138">138</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> checkOperationSuccessOnCell(KeyValue.Type targetOp,
-<a class="jxr_linenumber" name="139" href="#139">139</a>                                                @Nullable byte[] expectedValue,
-<a class="jxr_linenumber" name="140" href="#140">140</a>                                                byte[] tableName,
-<a class="jxr_linenumber" name="141" href="#141">141</a>                                                byte[] row,
-<a class="jxr_linenumber" name="142" href="#142">142</a>                                                byte[] fam,
-<a class="jxr_linenumber" name="143" href="#143">143</a>                                                byte[] col) {
-<a class="jxr_linenumber" name="144" href="#144">144</a> 
-<a class="jxr_linenumber" name="145" href="#145">145</a>         <strong class="jxr_keyword">try</strong> (HTable table = <strong class="jxr_keyword">new</strong> HTable(hbaseConf, tableName)) {
-<a class="jxr_linenumber" name="146" href="#146">146</a>             Get get = <strong class="jxr_keyword">new</strong> Get(row).setMaxVersions(1);
-<a class="jxr_linenumber" name="147" href="#147">147</a>             Result result = table.get(get);
-<a class="jxr_linenumber" name="148" href="#148">148</a>             Cell latestCell = result.getColumnLatestCell(fam, col);
-<a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>             <strong class="jxr_keyword">switch</strong> (targetOp) {
-<a class="jxr_linenumber" name="151" href="#151">151</a>                 <strong class="jxr_keyword">case</strong> Put:
-<a class="jxr_linenumber" name="152" href="#152">152</a>                     assertEquals(latestCell.getTypeByte(), targetOp.getCode());
-<a class="jxr_linenumber" name="153" href="#153">153</a>                     assertEquals(CellUtil.cloneValue(latestCell), expectedValue);
-<a class="jxr_linenumber" name="154" href="#154">154</a>                     LOG.trace(<span class="jxr_string">"Value for "</span> + Bytes.toString(tableName) + <span class="jxr_string">":"</span>
-<a class="jxr_linenumber" name="155" href="#155">155</a>                             + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam) + <span class="jxr_string">":"</span>
-<a class="jxr_linenumber" name="156" href="#156">156</a>                             + Bytes.toString(col) + <span class="jxr_string">"=&gt;"</span> + Bytes.toString(CellUtil.cloneValue(latestCell))
-<a class="jxr_linenumber" name="157" href="#157">157</a>                             + <span class="jxr_string">" ("</span> + Bytes.toString(expectedValue) + <span class="jxr_string">" expected)"</span>);
-<a class="jxr_linenumber" name="158" href="#158">158</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="159" href="#159">159</a>                 <strong class="jxr_keyword">case</strong> Delete:
-<a class="jxr_linenumber" name="160" href="#160">160</a>                     LOG.trace(<span class="jxr_string">"Value for "</span> + Bytes.toString(tableName) + <span class="jxr_string">":"</span>
-<a class="jxr_linenumber" name="161" href="#161">161</a>                             + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam)
-<a class="jxr_linenumber" name="162" href="#162">162</a>                             + Bytes.toString(col) + <span class="jxr_string">" deleted"</span>);
-<a class="jxr_linenumber" name="163" href="#163">163</a>                     assertNull(latestCell);
-<a class="jxr_linenumber" name="164" href="#164">164</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="165" href="#165">165</a>                 <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="166" href="#166">166</a>                     fail();
-<a class="jxr_linenumber" name="167" href="#167">167</a>             }
-<a class="jxr_linenumber" name="168" href="#168">168</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="169" href="#169">169</a>             LOG.error(<span class="jxr_string">"Error reading row "</span> + Bytes.toString(tableName) + <span class="jxr_string">":"</span>
-<a class="jxr_linenumber" name="170" href="#170">170</a>                     + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam)
-<a class="jxr_linenumber" name="171" href="#171">171</a>                     + Bytes.toString(col), e);
-<a class="jxr_linenumber" name="172" href="#172">172</a>             fail();
-<a class="jxr_linenumber" name="173" href="#173">173</a>         }
-<a class="jxr_linenumber" name="174" href="#174">174</a>     }
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a> }
+<a class="jxr_linenumber" name="138" href="#138">138</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> checkOperationSuccessOnCell(Table table,
+<a class="jxr_linenumber" name="139" href="#139">139</a>                                                KeyValue.Type targetOp,
+<a class="jxr_linenumber" name="140" href="#140">140</a>                                                @Nullable byte[] expectedValue,
+<a class="jxr_linenumber" name="141" href="#141">141</a>                                                byte[] tableName,
+<a class="jxr_linenumber" name="142" href="#142">142</a>                                                byte[] row,
+<a class="jxr_linenumber" name="143" href="#143">143</a>                                                byte[] fam,
+<a class="jxr_linenumber" name="144" href="#144">144</a>                                                byte[] col) {
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="147" href="#147">147</a>             Get get = <strong class="jxr_keyword">new</strong> Get(row).setMaxVersions(1);
+<a class="jxr_linenumber" name="148" href="#148">148</a>             Result result = table.get(get);
+<a class="jxr_linenumber" name="149" href="#149">149</a>             Cell latestCell = result.getColumnLatestCell(fam, col);
+<a class="jxr_linenumber" name="150" href="#150">150</a> 
+<a class="jxr_linenumber" name="151" href="#151">151</a>             <strong class="jxr_keyword">switch</strong> (targetOp) {
+<a class="jxr_linenumber" name="152" href="#152">152</a>                 <strong class="jxr_keyword">case</strong> Put:
+<a class="jxr_linenumber" name="153" href="#153">153</a>                     assertEquals(latestCell.getTypeByte(), targetOp.getCode());
+<a class="jxr_linenumber" name="154" href="#154">154</a>                     assertEquals(CellUtil.cloneValue(latestCell), expectedValue);
+<a class="jxr_linenumber" name="155" href="#155">155</a>                     LOG.trace(<span class="jxr_string">"Value for "</span> + Bytes.toString(tableName) + <span class="jxr_string">":"</span>
+<a class="jxr_linenumber" name="156" href="#156">156</a>                             + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam) + <span class="jxr_string">":"</span>
+<a class="jxr_linenumber" name="157" href="#157">157</a>                             + Bytes.toString(col) + <span class="jxr_string">"=&gt;"</span> + Bytes.toString(CellUtil.cloneValue(latestCell))
+<a class="jxr_linenumber" name="158" href="#158">158</a>                             + <span class="jxr_string">" ("</span> + Bytes.toString(expectedValue) + <span class="jxr_string">" expected)"</span>);
+<a class="jxr_linenumber" name="159" href="#159">159</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="160" href="#160">160</a>                 <strong class="jxr_keyword">case</strong> Delete:
+<a class="jxr_linenumber" name="161" href="#161">161</a>                     LOG.trace(<span class="jxr_string">"Value for "</span> + Bytes.toString(tableName) + <span class="jxr_string">":"</span>
+<a class="jxr_linenumber" name="162" href="#162">162</a>                             + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam)
+<a class="jxr_linenumber" name="163" href="#163">163</a>                             + Bytes.toString(col) + <span class="jxr_string">" deleted"</span>);
+<a class="jxr_linenumber" name="164" href="#164">164</a>                     assertNull(latestCell);
+<a class="jxr_linenumber" name="165" href="#165">165</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="166" href="#166">166</a>                 <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="167" href="#167">167</a>                     fail();
+<a class="jxr_linenumber" name="168" href="#168">168</a>             }
+<a class="jxr_linenumber" name="169" href="#169">169</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="170" href="#170">170</a>             LOG.error(<span class="jxr_string">"Error reading row "</span> + Bytes.toString(tableName) + <span class="jxr_string">":"</span>
+<a class="jxr_linenumber" name="171" href="#171">171</a>                     + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam)
+<a class="jxr_linenumber" name="172" href="#172">172</a>                     + Bytes.toString(col), e);
+<a class="jxr_linenumber" name="173" href="#173">173</a>             fail();
+<a class="jxr_linenumber" name="174" href="#174">174</a>         }
+<a class="jxr_linenumber" name="175" href="#175">175</a>     }
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestUpdateScan.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestUpdateScan.html b/xref-test/org/apache/omid/transaction/TestUpdateScan.html
index 8c8d87a..cfbf9ce 100644
--- a/xref-test/org/apache/omid/transaction/TestUpdateScan.html
+++ b/xref-test/org/apache/omid/transaction/TestUpdateScan.html
@@ -27,25 +27,25 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.BinaryPrefixComparator;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.CompareFilter;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.FilterList;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.RowFilter;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.WhileMatchFilter;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.testng.Assert;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.BinaryPrefixComparator;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.CompareFilter;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.FilterList;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.RowFilter;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.WhileMatchFilter;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.testng.Assert;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="39" href="#39">39</a>  
 <a class="jxr_linenumber" name="40" href="#40">40</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
 <a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestUpdateScan.html">TestUpdateScan</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
@@ -58,13 +58,13 @@
 <a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGet(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="49" href="#49">49</a>          <strong class="jxr_keyword">try</strong> {
 <a class="jxr_linenumber" name="50" href="#50">50</a>              TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="51" href="#51">51</a>              TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="51" href="#51">51</a>              TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="52" href="#52">52</a>              Transaction t = tm.begin();
 <a class="jxr_linenumber" name="53" href="#53">53</a>              <strong class="jxr_keyword">int</strong>[] lInts = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{100, 243, 2342, 22, 1, 5, 43, 56};
 <a class="jxr_linenumber" name="54" href="#54">54</a>              <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; lInts.length; i++) {
 <a class="jxr_linenumber" name="55" href="#55">55</a>                  byte[] data = Bytes.toBytes(lInts[i]);
 <a class="jxr_linenumber" name="56" href="#56">56</a>                  Put put = <strong class="jxr_keyword">new</strong> Put(data);
-<a class="jxr_linenumber" name="57" href="#57">57</a>                  put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
+<a class="jxr_linenumber" name="57" href="#57">57</a>                  put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
 <a class="jxr_linenumber" name="58" href="#58">58</a>                  table.put(t, put);
 <a class="jxr_linenumber" name="59" href="#59">59</a>              }
 <a class="jxr_linenumber" name="60" href="#60">60</a>              <strong class="jxr_keyword">int</strong> startKeyValue = lInts[3];
@@ -115,15 +115,15 @@
 <a class="jxr_linenumber" name="105" href="#105">105</a>     @Test(timeOut = 10_000)
 <a class="jxr_linenumber" name="106" href="#106">106</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScan(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="107" href="#107">107</a> 
-<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">try</strong> (TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
+<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">try</strong> (TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
 <a class="jxr_linenumber" name="109" href="#109">109</a>             TransactionManager tm = newTransactionManager(context);
 <a class="jxr_linenumber" name="110" href="#110">110</a>             Transaction t = tm.begin();
 <a class="jxr_linenumber" name="111" href="#111">111</a>             <strong class="jxr_keyword">int</strong>[] lInts = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{100, 243, 2342, 22, 1, 5, 43, 56};
 <a class="jxr_linenumber" name="112" href="#112">112</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> lInt : lInts) {
 <a class="jxr_linenumber" name="113" href="#113">113</a>                 byte[] data = Bytes.toBytes(lInt);
 <a class="jxr_linenumber" name="114" href="#114">114</a>                 Put put = <strong class="jxr_keyword">new</strong> Put(data);
-<a class="jxr_linenumber" name="115" href="#115">115</a>                 put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
-<a class="jxr_linenumber" name="116" href="#116">116</a>                 put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL_2), data);
+<a class="jxr_linenumber" name="115" href="#115">115</a>                 put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
+<a class="jxr_linenumber" name="116" href="#116">116</a>                 put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL_2), data);
 <a class="jxr_linenumber" name="117" href="#117">117</a>                 table.put(t, put);
 <a class="jxr_linenumber" name="118" href="#118">118</a>             }
 <a class="jxr_linenumber" name="119" href="#119">119</a> 
@@ -164,13 +164,13 @@
 <a class="jxr_linenumber" name="154" href="#154">154</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanUncommitted(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="155" href="#155">155</a>         <strong class="jxr_keyword">try</strong> {
 <a class="jxr_linenumber" name="156" href="#156">156</a>             TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="157" href="#157">157</a>             TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="157" href="#157">157</a>             TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="158" href="#158">158</a>             Transaction t = tm.begin();
 <a class="jxr_linenumber" name="159" href="#159">159</a>             <strong class="jxr_keyword">int</strong>[] lIntsA = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{100, 243, 2342, 22, 1, 5, 43, 56};
 <a class="jxr_linenumber" name="160" href="#160">160</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> aLIntsA : lIntsA) {
 <a class="jxr_linenumber" name="161" href="#161">161</a>                 byte[] data = Bytes.toBytes(aLIntsA);
 <a class="jxr_linenumber" name="162" href="#162">162</a>                 Put put = <strong class="jxr_keyword">new</strong> Put(data);
-<a class="jxr_linenumber" name="163" href="#163">163</a>                 put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
+<a class="jxr_linenumber" name="163" href="#163">163</a>                 put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
 <a class="jxr_linenumber" name="164" href="#164">164</a>                 table.put(t, put);
 <a class="jxr_linenumber" name="165" href="#165">165</a>             }
 <a class="jxr_linenumber" name="166" href="#166">166</a>             tm.commit(t);
@@ -180,7 +180,7 @@
 <a class="jxr_linenumber" name="170" href="#170">170</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> aLIntsB : lIntsB) {
 <a class="jxr_linenumber" name="171" href="#171">171</a>                 byte[] data = Bytes.toBytes(aLIntsB);
 <a class="jxr_linenumber" name="172" href="#172">172</a>                 Put put = <strong class="jxr_keyword">new</strong> Put(data);
-<a class="jxr_linenumber" name="173" href="#173">173</a>                 put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
+<a class="jxr_linenumber" name="173" href="#173">173</a>                 put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
 <a class="jxr_linenumber" name="174" href="#174">174</a>                 table.put(tu, put);
 <a class="jxr_linenumber" name="175" href="#175">175</a>             }
 <a class="jxr_linenumber" name="176" href="#176">176</a> 
@@ -189,7 +189,7 @@
 <a class="jxr_linenumber" name="179" href="#179">179</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> aLIntsC : lIntsC) {
 <a class="jxr_linenumber" name="180" href="#180">180</a>                 byte[] data = Bytes.toBytes(aLIntsC);
 <a class="jxr_linenumber" name="181" href="#181">181</a>                 Put put = <strong class="jxr_keyword">new</strong> Put(data);
-<a class="jxr_linenumber" name="182" href="#182">182</a>                 put.add(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
+<a class="jxr_linenumber" name="182" href="#182">182</a>                 put.addColumn(Bytes.toBytes(TEST_FAMILY), Bytes.toBytes(TEST_COL), data);
 <a class="jxr_linenumber" name="183" href="#183">183</a>                 table.put(t, put);
 <a class="jxr_linenumber" name="184" href="#184">184</a>             }
 <a class="jxr_linenumber" name="185" href="#185">185</a>             tm.commit(t);

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/package-frame.html b/xref-test/org/apache/omid/transaction/package-frame.html
index 8c90716..5b1d031 100644
--- a/xref-test/org/apache/omid/transaction/package-frame.html
+++ b/xref-test/org/apache/omid/transaction/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.transaction</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.transaction</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -25,6 +25,9 @@
             	<a href="TSOForHBaseCompactorTestModule.html" target="classFrame">TSOForHBaseCompactorTestModule</a>
           	</li>
           	          	<li>
+            	<a href="TSOForSnapshotFilterTestModule.html" target="classFrame">TSOForSnapshotFilterTestModule</a>
+          	</li>
+          	          	<li>
             	<a href="TestAsynchronousPostCommitter.html" target="classFrame">TestAsynchronousPostCommitter</a>
           	</li>
           	          	<li>
@@ -40,6 +43,9 @@
             	<a href="TestCellUtils.html" target="classFrame">TestCellUtils</a>
           	</li>
           	          	<li>
+            	<a href="TestCheckpoint.html" target="classFrame">TestCheckpoint</a>
+          	</li>
+          	          	<li>
             	<a href="TestColumnIterator.html" target="classFrame">TestColumnIterator</a>
           	</li>
           	          	<li>
@@ -70,6 +76,9 @@
             	<a href="TestHBaseTransactionManager.html" target="classFrame">TestHBaseTransactionManager</a>
           	</li>
           	          	<li>
+            	<a href="TestMarkPutAsCommitted.html" target="classFrame">TestMarkPutAsCommitted</a>
+          	</li>
+          	          	<li>
             	<a href="TestMultiplePut.html" target="classFrame">TestMultiplePut</a>
           	</li>
           	          	<li>
@@ -82,6 +91,9 @@
             	<a href="TestSingleColumnFamily.html" target="classFrame">TestSingleColumnFamily</a>
           	</li>
           	          	<li>
+            	<a href="TestSnapshotFilter.html" target="classFrame">TestSnapshotFilter</a>
+          	</li>
+          	          	<li>
             	<a href="TestTSOModule.html" target="classFrame">TestTSOModule</a>
           	</li>
           	          	<li>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/package-summary.html b/xref-test/org/apache/omid/transaction/package-summary.html
index b262e00..21ec263 100644
--- a/xref-test/org/apache/omid/transaction/package-summary.html
+++ b/xref-test/org/apache/omid/transaction/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.transaction</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.transaction</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -52,6 +52,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="TSOForSnapshotFilterTestModule.html" target="classFrame">TSOForSnapshotFilterTestModule</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="TestAsynchronousPostCommitter.html" target="classFrame">TestAsynchronousPostCommitter</a>
               		</td>
             	</tr>
@@ -77,6 +82,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="TestCheckpoint.html" target="classFrame">TestCheckpoint</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="TestColumnIterator.html" target="classFrame">TestColumnIterator</a>
               		</td>
             	</tr>
@@ -127,6 +137,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="TestMarkPutAsCommitted.html" target="classFrame">TestMarkPutAsCommitted</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="TestMultiplePut.html" target="classFrame">TestMultiplePut</a>
               		</td>
             	</tr>
@@ -147,6 +162,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="TestSnapshotFilter.html" target="classFrame">TestSnapshotFilter</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="TestTSOModule.html" target="classFrame">TestTSOModule</a>
               		</td>
             	</tr>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/TSOMockModule.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/TSOMockModule.html b/xref-test/org/apache/omid/tso/TSOMockModule.html
index 004ac59..4cc6b4f 100644
--- a/xref-test/org/apache/omid/tso/TSOMockModule.html
+++ b/xref-test/org/apache/omid/tso/TSOMockModule.html
@@ -36,67 +36,72 @@
 <a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
 <a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
 <a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.TimestampStorage;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TimestampOracleImpl.InMemoryTimestampStorage;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> javax.inject.Named;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> javax.inject.Singleton;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.net.SocketException;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.net.UnknownHostException;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.TSOServer.TSO_HOST_AND_PORT_KEY;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a> <strong class="jxr_keyword">extends</strong> AbstractModule {
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> TSOServerConfig config;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(TSOServerConfig config) {
-<a class="jxr_linenumber" name="43" href="#43">43</a>          Preconditions.checkArgument(config.getNumConcurrentCTWriters() &gt;= 2, <span class="jxr_string">"# of Commit Table writers must be &gt;= 2"</span>);
-<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">this</strong>.config = config;
-<a class="jxr_linenumber" name="45" href="#45">45</a>      }
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>      @Override
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> configure() {
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>          bind(TSOChannelHandler.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="51" href="#51">51</a>          bind(TSOStateManager.<strong class="jxr_keyword">class</strong>).to(TSOStateManagerImpl.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="52" href="#52">52</a>          bind(CommitTable.<strong class="jxr_keyword">class</strong>).to(InMemoryCommitTable.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="53" href="#53">53</a>          bind(TimestampStorage.<strong class="jxr_keyword">class</strong>).to(InMemoryTimestampStorage.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="54" href="#54">54</a>          bind(TimestampOracle.<strong class="jxr_keyword">class</strong>).to(PausableTimestampOracle.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="55" href="#55">55</a>          bind(Panicker.<strong class="jxr_keyword">class</strong>).to(MockPanicker.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>          install(<strong class="jxr_keyword">new</strong> BatchPoolModule(config));
-<a class="jxr_linenumber" name="58" href="#58">58</a>          install(config.getLeaseModule());
-<a class="jxr_linenumber" name="59" href="#59">59</a>          install(<strong class="jxr_keyword">new</strong> DisruptorModule(config));
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>      }
-<a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>      @Provides
-<a class="jxr_linenumber" name="64" href="#64">64</a>      TSOServerConfig provideTSOServerConfig() {
-<a class="jxr_linenumber" name="65" href="#65">65</a>          <strong class="jxr_keyword">return</strong> config;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig.TIMESTAMP_TYPE;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TimestampOracleImpl.InMemoryTimestampStorage;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> javax.inject.Named;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> javax.inject.Singleton;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.net.SocketException;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.net.UnknownHostException;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.TSOServer.TSO_HOST_AND_PORT_KEY;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a> <strong class="jxr_keyword">extends</strong> AbstractModule {
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> TSOServerConfig config;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(TSOServerConfig config) {
+<a class="jxr_linenumber" name="44" href="#44">44</a>          Preconditions.checkArgument(config.getNumConcurrentCTWriters() &gt;= 2, <span class="jxr_string">"# of Commit Table writers must be &gt;= 2"</span>);
+<a class="jxr_linenumber" name="45" href="#45">45</a>          <strong class="jxr_keyword">this</strong>.config = config;
+<a class="jxr_linenumber" name="46" href="#46">46</a>      }
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>      @Override
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> configure() {
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>          bind(TSOChannelHandler.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="52" href="#52">52</a>          bind(TSOStateManager.<strong class="jxr_keyword">class</strong>).to(TSOStateManagerImpl.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="53" href="#53">53</a>          bind(CommitTable.<strong class="jxr_keyword">class</strong>).to(InMemoryCommitTable.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="54" href="#54">54</a>          bind(TimestampStorage.<strong class="jxr_keyword">class</strong>).to(InMemoryTimestampStorage.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="55" href="#55">55</a>          <strong class="jxr_keyword">if</strong> (config.getTimestampTypeEnum() == TIMESTAMP_TYPE.WORLD_TIME) {
+<a class="jxr_linenumber" name="56" href="#56">56</a>              bind(TimestampOracle.<strong class="jxr_keyword">class</strong>).to(WorldClockOracleImpl.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="57" href="#57">57</a>          } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="58" href="#58">58</a>              bind(TimestampOracle.<strong class="jxr_keyword">class</strong>).to(PausableTimestampOracle.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="59" href="#59">59</a>          }
+<a class="jxr_linenumber" name="60" href="#60">60</a>          bind(Panicker.<strong class="jxr_keyword">class</strong>).to(MockPanicker.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>          install(<strong class="jxr_keyword">new</strong> BatchPoolModule(config));
+<a class="jxr_linenumber" name="63" href="#63">63</a>          install(config.getLeaseModule());
+<a class="jxr_linenumber" name="64" href="#64">64</a>          install(<strong class="jxr_keyword">new</strong> DisruptorModule(config));
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
 <a class="jxr_linenumber" name="66" href="#66">66</a>      }
 <a class="jxr_linenumber" name="67" href="#67">67</a>  
 <a class="jxr_linenumber" name="68" href="#68">68</a>      @Provides
-<a class="jxr_linenumber" name="69" href="#69">69</a>      @Singleton
-<a class="jxr_linenumber" name="70" href="#70">70</a>      MetricsRegistry provideMetricsRegistry() {
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NullMetricsProvider();
-<a class="jxr_linenumber" name="72" href="#72">72</a>      }
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>      @Provides
-<a class="jxr_linenumber" name="75" href="#75">75</a>      @Named(TSO_HOST_AND_PORT_KEY)
-<a class="jxr_linenumber" name="76" href="#76">76</a>      String provideTSOHostAndPort() <strong class="jxr_keyword">throws</strong> SocketException, UnknownHostException {
-<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">return</strong> NetworkInterfaceUtils.getTSOHostAndPort(config);
-<a class="jxr_linenumber" name="78" href="#78">78</a>      }
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>      @Provides
-<a class="jxr_linenumber" name="81" href="#81">81</a>      PersistenceProcessorHandler[] getPersistenceProcessorHandler(Provider&lt;PersistenceProcessorHandler&gt; provider) {
-<a class="jxr_linenumber" name="82" href="#82">82</a>          PersistenceProcessorHandler[] persistenceProcessorHandlers = <strong class="jxr_keyword">new</strong> PersistenceProcessorHandler[config.getNumConcurrentCTWriters()];
-<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; persistenceProcessorHandlers.length; i++) {
-<a class="jxr_linenumber" name="84" href="#84">84</a>              persistenceProcessorHandlers[i] = provider.get();
-<a class="jxr_linenumber" name="85" href="#85">85</a>          }
-<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">return</strong> persistenceProcessorHandlers;
-<a class="jxr_linenumber" name="87" href="#87">87</a>      }
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>  }
+<a class="jxr_linenumber" name="69" href="#69">69</a>      TSOServerConfig provideTSOServerConfig() {
+<a class="jxr_linenumber" name="70" href="#70">70</a>          <strong class="jxr_keyword">return</strong> config;
+<a class="jxr_linenumber" name="71" href="#71">71</a>      }
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>      @Provides
+<a class="jxr_linenumber" name="74" href="#74">74</a>      @Singleton
+<a class="jxr_linenumber" name="75" href="#75">75</a>      MetricsRegistry provideMetricsRegistry() {
+<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NullMetricsProvider();
+<a class="jxr_linenumber" name="77" href="#77">77</a>      }
+<a class="jxr_linenumber" name="78" href="#78">78</a>  
+<a class="jxr_linenumber" name="79" href="#79">79</a>      @Provides
+<a class="jxr_linenumber" name="80" href="#80">80</a>      @Named(TSO_HOST_AND_PORT_KEY)
+<a class="jxr_linenumber" name="81" href="#81">81</a>      String provideTSOHostAndPort() <strong class="jxr_keyword">throws</strong> SocketException, UnknownHostException {
+<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">return</strong> NetworkInterfaceUtils.getTSOHostAndPort(config);
+<a class="jxr_linenumber" name="83" href="#83">83</a>      }
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>      @Provides
+<a class="jxr_linenumber" name="86" href="#86">86</a>      PersistenceProcessorHandler[] getPersistenceProcessorHandler(Provider&lt;PersistenceProcessorHandler&gt; provider) {
+<a class="jxr_linenumber" name="87" href="#87">87</a>          PersistenceProcessorHandler[] persistenceProcessorHandlers = <strong class="jxr_keyword">new</strong> PersistenceProcessorHandler[config.getNumConcurrentCTWriters()];
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; persistenceProcessorHandlers.length; i++) {
+<a class="jxr_linenumber" name="89" href="#89">89</a>              persistenceProcessorHandlers[i] = provider.get();
+<a class="jxr_linenumber" name="90" href="#90">90</a>          }
+<a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">return</strong> persistenceProcessorHandlers;
+<a class="jxr_linenumber" name="92" href="#92">92</a>      }
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[36/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestHBaseTransactionClient.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestHBaseTransactionClient.html b/xref-test/org/apache/omid/transaction/TestHBaseTransactionClient.html
index 18fc9de..4b46d5c 100644
--- a/xref-test/org/apache/omid/transaction/TestHBaseTransactionClient.html
+++ b/xref-test/org/apache/omid/transaction/TestHBaseTransactionClient.html
@@ -27,326 +27,326 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Maps;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager.CommitTimestampLocatorImpl;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTable;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.CACHE;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.COMMIT_TABLE;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.NOT_PRESENT;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.SHADOW_CELL;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doThrow;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestHBaseTransactionClient.html">TestHBaseTransactionClient</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"test-is-committed1"</span>);
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row2 = Bytes.toBytes(<span class="jxr_string">"test-is-committed2"</span>);
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>      @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testIsCommitted(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="58" href="#58">58</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="59" href="#59">59</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>          HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.CACHE;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.COMMIT_TABLE;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.NOT_PRESENT;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location.SHADOW_CELL;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doThrow;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.HBaseTransactionManager.CommitTimestampLocatorImpl;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Maps;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestHBaseTransactionClient.html">TestHBaseTransactionClient</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"test-is-committed1"</span>);
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row2 = Bytes.toBytes(<span class="jxr_string">"test-is-committed2"</span>);
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>      @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testIsCommitted(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="60" href="#60">60</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="61" href="#61">61</a>          TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE, ((AbstractTransactionManager)tm).getCommitTableClient()));
 <a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="64" href="#64">64</a>          put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="65" href="#65">65</a>          table.put(t1, put);
-<a class="jxr_linenumber" name="66" href="#66">66</a>          tm.commit(t1);
-<a class="jxr_linenumber" name="67" href="#67">67</a>  
-<a class="jxr_linenumber" name="68" href="#68">68</a>          HBaseTransaction t2 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="69" href="#69">69</a>          put = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="70" href="#70">70</a>          put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="71" href="#71">71</a>          table.put(t2, put);
-<a class="jxr_linenumber" name="72" href="#72">72</a>          table.getHTable().flushCommits();
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>          HBaseTransaction t3 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="75" href="#75">75</a>          put = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="76" href="#76">76</a>          put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="77" href="#77">77</a>          table.put(t3, put);
-<a class="jxr_linenumber" name="78" href="#78">78</a>          tm.commit(t3);
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          HTable htable = <strong class="jxr_keyword">new</strong> HTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="81" href="#81">81</a>          HBaseCellId hBaseCellId1 = <strong class="jxr_keyword">new</strong> HBaseCellId(htable, row1, family, qualifier, t1.getStartTimestamp());
-<a class="jxr_linenumber" name="82" href="#82">82</a>          HBaseCellId hBaseCellId2 = <strong class="jxr_keyword">new</strong> HBaseCellId(htable, row2, family, qualifier, t2.getStartTimestamp());
-<a class="jxr_linenumber" name="83" href="#83">83</a>          HBaseCellId hBaseCellId3 = <strong class="jxr_keyword">new</strong> HBaseCellId(htable, row2, family, qualifier, t3.getStartTimestamp());
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>          HBaseTransactionClient hbaseTm = (HBaseTransactionClient) newTransactionManager(context);
-<a class="jxr_linenumber" name="86" href="#86">86</a>          assertTrue(hbaseTm.isCommitted(hBaseCellId1), <span class="jxr_string">"row1 should be committed"</span>);
-<a class="jxr_linenumber" name="87" href="#87">87</a>          assertFalse(hbaseTm.isCommitted(hBaseCellId2), <span class="jxr_string">"row2 should not be committed for kv2"</span>);
-<a class="jxr_linenumber" name="88" href="#88">88</a>          assertTrue(hbaseTm.isCommitted(hBaseCellId3), <span class="jxr_string">"row2 should be committed for kv3"</span>);
-<a class="jxr_linenumber" name="89" href="#89">89</a>      }
-<a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>      @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCrashAfterCommit(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="93" href="#93">93</a>          PostCommitActions syncPostCommitter =
-<a class="jxr_linenumber" name="94" href="#94">94</a>                  spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), getCommitTable(context).getClient()));
-<a class="jxr_linenumber" name="95" href="#95">95</a>          AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager(context, syncPostCommitter);
-<a class="jxr_linenumber" name="96" href="#96">96</a>          <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>          doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>         HBaseTransaction t1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="102" href="#102">102</a> 
-<a class="jxr_linenumber" name="103" href="#103">103</a>         <em class="jxr_comment">// Test shadow cell are created properly</em>
-<a class="jxr_linenumber" name="104" href="#104">104</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="105" href="#105">105</a>         put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="106" href="#106">106</a>         table.put(t1, put);
-<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="108" href="#108">108</a>             tm.commit(t1);
-<a class="jxr_linenumber" name="109" href="#109">109</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a>             <em class="jxr_comment">// Do nothing</em>
-<a class="jxr_linenumber" name="111" href="#111">111</a>         }
-<a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a>         assertTrue(CellUtils.hasCell(row1, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="114" href="#114">114</a>                    <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="115" href="#115">115</a>         assertFalse(CellUtils.hasShadowCell(row1, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="116" href="#116">116</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="117" href="#117">117</a> 
-<a class="jxr_linenumber" name="118" href="#118">118</a>         HTable htable = <strong class="jxr_keyword">new</strong> HTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="119" href="#119">119</a>         HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(htable, row1, family, qualifier, t1.getStartTimestamp());
+<a class="jxr_linenumber" name="63" href="#63">63</a>          HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="66" href="#66">66</a>          put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="67" href="#67">67</a>          table.put(t1, put);
+<a class="jxr_linenumber" name="68" href="#68">68</a>          tm.commit(t1);
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>          HBaseTransaction t2 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="71" href="#71">71</a>          put = <strong class="jxr_keyword">new</strong> Put(row2);
+<a class="jxr_linenumber" name="72" href="#72">72</a>          put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="73" href="#73">73</a>          table.put(t2, put);
+<a class="jxr_linenumber" name="74" href="#74">74</a>          table.flushCommits();
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>          HBaseTransaction t3 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="77" href="#77">77</a>          put = <strong class="jxr_keyword">new</strong> Put(row2);
+<a class="jxr_linenumber" name="78" href="#78">78</a>          put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="79" href="#79">79</a>          table.put(t3, put);
+<a class="jxr_linenumber" name="80" href="#80">80</a>          tm.commit(t3);
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>          HBaseCellId hBaseCellId1 = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier, t1.getStartTimestamp());
+<a class="jxr_linenumber" name="83" href="#83">83</a>          HBaseCellId hBaseCellId2 = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row2, family, qualifier, t2.getStartTimestamp());
+<a class="jxr_linenumber" name="84" href="#84">84</a>          HBaseCellId hBaseCellId3 = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row2, family, qualifier, t3.getStartTimestamp());
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>          HBaseTransactionClient hbaseTm = (HBaseTransactionClient) newTransactionManager(context);
+<a class="jxr_linenumber" name="87" href="#87">87</a>          assertTrue(table.isCommitted(hBaseCellId1, 0), <span class="jxr_string">"row1 should be committed"</span>);
+<a class="jxr_linenumber" name="88" href="#88">88</a>          assertFalse(table.isCommitted(hBaseCellId2, 0), <span class="jxr_string">"row2 should not be committed for kv2"</span>);
+<a class="jxr_linenumber" name="89" href="#89">89</a>          assertTrue(table.isCommitted(hBaseCellId3, 0), <span class="jxr_string">"row2 should be committed for kv3"</span>);
+<a class="jxr_linenumber" name="90" href="#90">90</a>      }
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>      @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCrashAfterCommit(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="94" href="#94">94</a>          PostCommitActions syncPostCommitter =
+<a class="jxr_linenumber" name="95" href="#95">95</a>                  spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), getCommitTable(context).getClient()));
+<a class="jxr_linenumber" name="96" href="#96">96</a>          AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager(context, syncPostCommitter);
+<a class="jxr_linenumber" name="97" href="#97">97</a>          <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
+<a class="jxr_linenumber" name="98" href="#98">98</a>          doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="99" href="#99">99</a>  
+<a class="jxr_linenumber" name="100" href="#100">100</a>         TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE, tm.getCommitTableClient()));
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>         HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <em class="jxr_comment">// Test shadow cell are created properly</em>
+<a class="jxr_linenumber" name="105" href="#105">105</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="106" href="#106">106</a>         put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="107" href="#107">107</a>         table.put(t1, put);
+<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="109" href="#109">109</a>             tm.commit(t1);
+<a class="jxr_linenumber" name="110" href="#110">110</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
+<a class="jxr_linenumber" name="111" href="#111">111</a>             <em class="jxr_comment">// Do nothing</em>
+<a class="jxr_linenumber" name="112" href="#112">112</a>         }
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>         assertTrue(CellUtils.hasCell(row1, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="115" href="#115">115</a>                    <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="116" href="#116">116</a>         assertFalse(CellUtils.hasShadowCell(row1, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="117" href="#117">117</a>                     <span class="jxr_string">"Shadow cell should not be there"</span>);
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>         HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier, t1.getStartTimestamp());
 <a class="jxr_linenumber" name="120" href="#120">120</a> 
 <a class="jxr_linenumber" name="121" href="#121">121</a>         HBaseTransactionClient hbaseTm = (HBaseTransactionClient) newTransactionManager(context);
-<a class="jxr_linenumber" name="122" href="#122">122</a>         assertTrue(hbaseTm.isCommitted(hBaseCellId), <span class="jxr_string">"row1 should be committed"</span>);
+<a class="jxr_linenumber" name="122" href="#122">122</a>         assertTrue(table.isCommitted(hBaseCellId, 0), <span class="jxr_string">"row1 should be committed"</span>);
 <a class="jxr_linenumber" name="123" href="#123">123</a>     }
 <a class="jxr_linenumber" name="124" href="#124">124</a> 
 <a class="jxr_linenumber" name="125" href="#125">125</a>     @Test(timeOut = 30_000)
 <a class="jxr_linenumber" name="126" href="#126">126</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadCommitTimestampFromCommitTable(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="127" href="#127">127</a> 
-<a class="jxr_linenumber" name="128" href="#128">128</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> NON_EXISTING_CELL_TS = 1000L;
-<a class="jxr_linenumber" name="129" href="#129">129</a> 
-<a class="jxr_linenumber" name="130" href="#130">130</a>         PostCommitActions syncPostCommitter =
-<a class="jxr_linenumber" name="131" href="#131">131</a>                 spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), getCommitTable(context).getClient()));
-<a class="jxr_linenumber" name="132" href="#132">132</a>         AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager(context, syncPostCommitter);
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
-<a class="jxr_linenumber" name="134" href="#134">134</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="135" href="#135">135</a> 
-<a class="jxr_linenumber" name="136" href="#136">136</a>         <em class="jxr_comment">// Test that a non-existing cell timestamp returns an empty result</em>
-<a class="jxr_linenumber" name="137" href="#137">137</a>         Optional&lt;CommitTimestamp&gt; optionalCT = tm.commitTableClient.getCommitTimestamp(NON_EXISTING_CELL_TS).get();
-<a class="jxr_linenumber" name="138" href="#138">138</a>         assertFalse(optionalCT.isPresent());
-<a class="jxr_linenumber" name="139" href="#139">139</a> 
-<a class="jxr_linenumber" name="140" href="#140">140</a>         <strong class="jxr_keyword">try</strong> (TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="141" href="#141">141</a>             <em class="jxr_comment">// Test that we get an invalidation mark for an invalidated transaction</em>
-<a class="jxr_linenumber" name="142" href="#142">142</a> 
-<a class="jxr_linenumber" name="143" href="#143">143</a>             <em class="jxr_comment">// Start a transaction and invalidate it before commiting it</em>
-<a class="jxr_linenumber" name="144" href="#144">144</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="145" href="#145">145</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="146" href="#146">146</a>             put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="147" href="#147">147</a>             table.put(tx1, put);
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>             assertTrue(tm.commitTableClient.tryInvalidateTransaction(tx1.getStartTimestamp()).get());
-<a class="jxr_linenumber" name="150" href="#150">150</a>             optionalCT = tm.commitTableClient.getCommitTimestamp(tx1.getStartTimestamp()).get();
-<a class="jxr_linenumber" name="151" href="#151">151</a>             assertTrue(optionalCT.isPresent());
-<a class="jxr_linenumber" name="152" href="#152">152</a>             CommitTimestamp ct = optionalCT.get();
-<a class="jxr_linenumber" name="153" href="#153">153</a>             assertFalse(ct.isValid());
-<a class="jxr_linenumber" name="154" href="#154">154</a>             assertEquals(ct.getValue(), CommitTable.INVALID_TRANSACTION_MARKER);
-<a class="jxr_linenumber" name="155" href="#155">155</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE) == 0);
-<a class="jxr_linenumber" name="156" href="#156">156</a> 
-<a class="jxr_linenumber" name="157" href="#157">157</a>             <em class="jxr_comment">// Finally test that we get the right commit timestamp for a committed tx</em>
-<a class="jxr_linenumber" name="158" href="#158">158</a>             <em class="jxr_comment">// that couldn't get</em>
-<a class="jxr_linenumber" name="159" href="#159">159</a>             HBaseTransaction tx2 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="160" href="#160">160</a>             Put otherPut = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="161" href="#161">161</a>             otherPut.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="162" href="#162">162</a>             table.put(tx2, otherPut);
-<a class="jxr_linenumber" name="163" href="#163">163</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="164" href="#164">164</a>                 tm.commit(tx2);
-<a class="jxr_linenumber" name="165" href="#165">165</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
-<a class="jxr_linenumber" name="166" href="#166">166</a>                 <em class="jxr_comment">// Do nothing</em>
-<a class="jxr_linenumber" name="167" href="#167">167</a>             }
-<a class="jxr_linenumber" name="168" href="#168">168</a> 
-<a class="jxr_linenumber" name="169" href="#169">169</a>             optionalCT = tm.commitTableClient.getCommitTimestamp(tx2.getStartTimestamp()).get();
-<a class="jxr_linenumber" name="170" href="#170">170</a>             assertTrue(optionalCT.isPresent());
-<a class="jxr_linenumber" name="171" href="#171">171</a>             ct = optionalCT.get();
-<a class="jxr_linenumber" name="172" href="#172">172</a>             assertTrue(ct.isValid());
-<a class="jxr_linenumber" name="173" href="#173">173</a>             assertEquals(ct.getValue(), tx2.getCommitTimestamp());
-<a class="jxr_linenumber" name="174" href="#174">174</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE) == 0);
-<a class="jxr_linenumber" name="175" href="#175">175</a>         }
-<a class="jxr_linenumber" name="176" href="#176">176</a>     }
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="179" href="#179">179</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadCommitTimestampFromShadowCell(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="180" href="#180">180</a> 
-<a class="jxr_linenumber" name="181" href="#181">181</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> NON_EXISTING_CELL_TS = 1L;
-<a class="jxr_linenumber" name="182" href="#182">182</a> 
-<a class="jxr_linenumber" name="183" href="#183">183</a>         HBaseTransactionManager tm = (HBaseTransactionManager) newTransactionManager(context);
-<a class="jxr_linenumber" name="184" href="#184">184</a> 
-<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">try</strong> (TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>             <em class="jxr_comment">// Test first we can not found a non-existent cell ts</em>
-<a class="jxr_linenumber" name="188" href="#188">188</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table.getHTable(), row1, family, qualifier, NON_EXISTING_CELL_TS);
-<a class="jxr_linenumber" name="189" href="#189">189</a>             <em class="jxr_comment">// Set an empty cache to allow to bypass the checking</em>
-<a class="jxr_linenumber" name="190" href="#190">190</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
-<a class="jxr_linenumber" name="191" href="#191">191</a>                     Maps.&lt;Long, Long&gt;newHashMap());
-<a class="jxr_linenumber" name="192" href="#192">192</a>             Optional&lt;CommitTimestamp&gt; optionalCT = tm
-<a class="jxr_linenumber" name="193" href="#193">193</a>                     .readCommitTimestampFromShadowCell(NON_EXISTING_CELL_TS, ctLocator);
-<a class="jxr_linenumber" name="194" href="#194">194</a>             assertFalse(optionalCT.isPresent());
-<a class="jxr_linenumber" name="195" href="#195">195</a> 
-<a class="jxr_linenumber" name="196" href="#196">196</a>             <em class="jxr_comment">// Then test that for a transaction committed, we get the right CT</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="198" href="#198">198</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="199" href="#199">199</a>             put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="200" href="#200">200</a>             table.put(tx1, put);
-<a class="jxr_linenumber" name="201" href="#201">201</a>             tm.commit(tx1);
-<a class="jxr_linenumber" name="202" href="#202">202</a>             <em class="jxr_comment">// Upon commit, the commit data should be in the shadow cells, so test it</em>
-<a class="jxr_linenumber" name="203" href="#203">203</a>             optionalCT = tm.readCommitTimestampFromShadowCell(tx1.getStartTimestamp(), ctLocator);
-<a class="jxr_linenumber" name="204" href="#204">204</a>             assertTrue(optionalCT.isPresent());
-<a class="jxr_linenumber" name="205" href="#205">205</a>             CommitTimestamp ct = optionalCT.get();
-<a class="jxr_linenumber" name="206" href="#206">206</a>             assertTrue(ct.isValid());
-<a class="jxr_linenumber" name="207" href="#207">207</a>             assertEquals(ct.getValue(), tx1.getCommitTimestamp());
-<a class="jxr_linenumber" name="208" href="#208">208</a>             assertTrue(ct.getLocation().compareTo(SHADOW_CELL) == 0);
-<a class="jxr_linenumber" name="209" href="#209">209</a> 
-<a class="jxr_linenumber" name="210" href="#210">210</a>         }
-<a class="jxr_linenumber" name="211" href="#211">211</a> 
-<a class="jxr_linenumber" name="212" href="#212">212</a>     }
-<a class="jxr_linenumber" name="213" href="#213">213</a> 
-<a class="jxr_linenumber" name="214" href="#214">214</a>     <em class="jxr_comment">// Tests step 1 in AbstractTransactionManager.locateCellCommitTimestamp()</em>
-<a class="jxr_linenumber" name="215" href="#215">215</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="216" href="#216">216</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellCommitTimestampIsLocatedInCache(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> CELL_ST = 1L;
-<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> CELL_CT = 2L;
-<a class="jxr_linenumber" name="220" href="#220">220</a> 
-<a class="jxr_linenumber" name="221" href="#221">221</a>         HBaseTransactionManager tm = (HBaseTransactionManager) newTransactionManager(context);
-<a class="jxr_linenumber" name="222" href="#222">222</a> 
-<a class="jxr_linenumber" name="223" href="#223">223</a>         <em class="jxr_comment">// Pre-load the element to look for in the cache</em>
-<a class="jxr_linenumber" name="224" href="#224">224</a>         HTable table = <strong class="jxr_keyword">new</strong> HTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="225" href="#225">225</a>         HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier, CELL_ST);
-<a class="jxr_linenumber" name="226" href="#226">226</a>         Map&lt;Long, Long&gt; fakeCache = Maps.newHashMap();
-<a class="jxr_linenumber" name="227" href="#227">227</a>         fakeCache.put(CELL_ST, CELL_CT);
-<a class="jxr_linenumber" name="228" href="#228">228</a> 
-<a class="jxr_linenumber" name="229" href="#229">229</a>         <em class="jxr_comment">// Then test that locator finds it in the cache</em>
-<a class="jxr_linenumber" name="230" href="#230">230</a>         CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId, fakeCache);
-<a class="jxr_linenumber" name="231" href="#231">231</a>         CommitTimestamp ct = tm.locateCellCommitTimestamp(CELL_ST, tm.tsoClient.getEpoch(), ctLocator);
-<a class="jxr_linenumber" name="232" href="#232">232</a>         assertTrue(ct.isValid());
-<a class="jxr_linenumber" name="233" href="#233">233</a>         assertEquals(ct.getValue(), CELL_CT);
-<a class="jxr_linenumber" name="234" href="#234">234</a>         assertTrue(ct.getLocation().compareTo(CACHE) == 0);
-<a class="jxr_linenumber" name="235" href="#235">235</a> 
-<a class="jxr_linenumber" name="236" href="#236">236</a>     }
+<a class="jxr_linenumber" name="128" href="#128">128</a>         <em class="jxr_comment">//connection = ConnectionFactory.createConnection(hbaseConf);</em>
+<a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> NON_EXISTING_CELL_TS = 1000L;
+<a class="jxr_linenumber" name="130" href="#130">130</a> 
+<a class="jxr_linenumber" name="131" href="#131">131</a>         PostCommitActions syncPostCommitter =
+<a class="jxr_linenumber" name="132" href="#132">132</a>                 spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), getCommitTable(context).getClient()));
+<a class="jxr_linenumber" name="133" href="#133">133</a>         AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager(context, syncPostCommitter);
+<a class="jxr_linenumber" name="134" href="#134">134</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
+<a class="jxr_linenumber" name="135" href="#135">135</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="136" href="#136">136</a> 
+<a class="jxr_linenumber" name="137" href="#137">137</a>         <em class="jxr_comment">// Test that a non-existing cell timestamp returns an empty result</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a>         Optional&lt;CommitTimestamp&gt; optionalCT = tm.commitTableClient.getCommitTimestamp(NON_EXISTING_CELL_TS).get();
+<a class="jxr_linenumber" name="139" href="#139">139</a>         assertFalse(optionalCT.isPresent());
+<a class="jxr_linenumber" name="140" href="#140">140</a> 
+<a class="jxr_linenumber" name="141" href="#141">141</a>         <strong class="jxr_keyword">try</strong> (TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE, tm.getCommitTableClient()))) {
+<a class="jxr_linenumber" name="142" href="#142">142</a>             <em class="jxr_comment">// Test that we get an invalidation mark for an invalidated transaction</em>
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>             <em class="jxr_comment">// Start a transaction and invalidate it before commiting it</em>
+<a class="jxr_linenumber" name="145" href="#145">145</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="146" href="#146">146</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="147" href="#147">147</a>             put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="148" href="#148">148</a>             table.put(tx1, put);
+<a class="jxr_linenumber" name="149" href="#149">149</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>             assertTrue(tm.commitTableClient.tryInvalidateTransaction(tx1.getStartTimestamp()).get());
+<a class="jxr_linenumber" name="151" href="#151">151</a>             optionalCT = tm.commitTableClient.getCommitTimestamp(tx1.getStartTimestamp()).get();
+<a class="jxr_linenumber" name="152" href="#152">152</a>             assertTrue(optionalCT.isPresent());
+<a class="jxr_linenumber" name="153" href="#153">153</a>             CommitTimestamp ct = optionalCT.get();
+<a class="jxr_linenumber" name="154" href="#154">154</a>             assertFalse(ct.isValid());
+<a class="jxr_linenumber" name="155" href="#155">155</a>             assertEquals(ct.getValue(), CommitTable.INVALID_TRANSACTION_MARKER);
+<a class="jxr_linenumber" name="156" href="#156">156</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE) == 0);
+<a class="jxr_linenumber" name="157" href="#157">157</a> 
+<a class="jxr_linenumber" name="158" href="#158">158</a>             <em class="jxr_comment">// Finally test that we get the right commit timestamp for a committed tx</em>
+<a class="jxr_linenumber" name="159" href="#159">159</a>             <em class="jxr_comment">// that couldn't get</em>
+<a class="jxr_linenumber" name="160" href="#160">160</a>             HBaseTransaction tx2 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="161" href="#161">161</a>             Put otherPut = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="162" href="#162">162</a>             otherPut.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="163" href="#163">163</a>             table.put(tx2, otherPut);
+<a class="jxr_linenumber" name="164" href="#164">164</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="165" href="#165">165</a>                 tm.commit(tx2);
+<a class="jxr_linenumber" name="166" href="#166">166</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a>                 <em class="jxr_comment">// Do nothing</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a>             }
+<a class="jxr_linenumber" name="169" href="#169">169</a> 
+<a class="jxr_linenumber" name="170" href="#170">170</a>             optionalCT = tm.commitTableClient.getCommitTimestamp(tx2.getStartTimestamp()).get();
+<a class="jxr_linenumber" name="171" href="#171">171</a>             assertTrue(optionalCT.isPresent());
+<a class="jxr_linenumber" name="172" href="#172">172</a>             ct = optionalCT.get();
+<a class="jxr_linenumber" name="173" href="#173">173</a>             assertTrue(ct.isValid());
+<a class="jxr_linenumber" name="174" href="#174">174</a>             assertEquals(ct.getValue(), tx2.getCommitTimestamp());
+<a class="jxr_linenumber" name="175" href="#175">175</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE) == 0);
+<a class="jxr_linenumber" name="176" href="#176">176</a>         }
+<a class="jxr_linenumber" name="177" href="#177">177</a>     }
+<a class="jxr_linenumber" name="178" href="#178">178</a> 
+<a class="jxr_linenumber" name="179" href="#179">179</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadCommitTimestampFromShadowCell(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> NON_EXISTING_CELL_TS = 1L;
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>         HBaseTransactionManager tm = (HBaseTransactionManager) newTransactionManager(context);
+<a class="jxr_linenumber" name="185" href="#185">185</a> 
+<a class="jxr_linenumber" name="186" href="#186">186</a>         <strong class="jxr_keyword">try</strong> (TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE, tm.getCommitTableClient()))) {
+<a class="jxr_linenumber" name="187" href="#187">187</a> 
+<a class="jxr_linenumber" name="188" href="#188">188</a>             <em class="jxr_comment">// Test first we can not found a non-existent cell ts</em>
+<a class="jxr_linenumber" name="189" href="#189">189</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier, NON_EXISTING_CELL_TS);
+<a class="jxr_linenumber" name="190" href="#190">190</a>             <em class="jxr_comment">// Set an empty cache to allow to bypass the checking</em>
+<a class="jxr_linenumber" name="191" href="#191">191</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
+<a class="jxr_linenumber" name="192" href="#192">192</a>                     Maps.&lt;Long, Long&gt;newHashMap());
+<a class="jxr_linenumber" name="193" href="#193">193</a>             Optional&lt;CommitTimestamp&gt; optionalCT = table
+<a class="jxr_linenumber" name="194" href="#194">194</a>                     .readCommitTimestampFromShadowCell(NON_EXISTING_CELL_TS, ctLocator);
+<a class="jxr_linenumber" name="195" href="#195">195</a>             assertFalse(optionalCT.isPresent());
+<a class="jxr_linenumber" name="196" href="#196">196</a> 
+<a class="jxr_linenumber" name="197" href="#197">197</a>             <em class="jxr_comment">// Then test that for a transaction committed, we get the right CT</em>
+<a class="jxr_linenumber" name="198" href="#198">198</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="199" href="#199">199</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="200" href="#200">200</a>             put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="201" href="#201">201</a>             table.put(tx1, put);
+<a class="jxr_linenumber" name="202" href="#202">202</a>             tm.commit(tx1);
+<a class="jxr_linenumber" name="203" href="#203">203</a>             <em class="jxr_comment">// Upon commit, the commit data should be in the shadow cells, so test it</em>
+<a class="jxr_linenumber" name="204" href="#204">204</a>             optionalCT = table.readCommitTimestampFromShadowCell(tx1.getStartTimestamp(), ctLocator);
+<a class="jxr_linenumber" name="205" href="#205">205</a>             assertTrue(optionalCT.isPresent());
+<a class="jxr_linenumber" name="206" href="#206">206</a>             CommitTimestamp ct = optionalCT.get();
+<a class="jxr_linenumber" name="207" href="#207">207</a>             assertTrue(ct.isValid());
+<a class="jxr_linenumber" name="208" href="#208">208</a>             assertEquals(ct.getValue(), tx1.getCommitTimestamp());
+<a class="jxr_linenumber" name="209" href="#209">209</a>             assertTrue(ct.getLocation().compareTo(SHADOW_CELL) == 0);
+<a class="jxr_linenumber" name="210" href="#210">210</a> 
+<a class="jxr_linenumber" name="211" href="#211">211</a>         }
+<a class="jxr_linenumber" name="212" href="#212">212</a> 
+<a class="jxr_linenumber" name="213" href="#213">213</a>     }
+<a class="jxr_linenumber" name="214" href="#214">214</a> 
+<a class="jxr_linenumber" name="215" href="#215">215</a>     <em class="jxr_comment">// Tests step 1 in AbstractTransactionManager.locateCellCommitTimestamp()</em>
+<a class="jxr_linenumber" name="216" href="#216">216</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellCommitTimestampIsLocatedInCache(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> CELL_ST = 1L;
+<a class="jxr_linenumber" name="220" href="#220">220</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> CELL_CT = 2L;
+<a class="jxr_linenumber" name="221" href="#221">221</a> 
+<a class="jxr_linenumber" name="222" href="#222">222</a>         HBaseTransactionManager tm = (HBaseTransactionManager) newTransactionManager(context);
+<a class="jxr_linenumber" name="223" href="#223">223</a> 
+<a class="jxr_linenumber" name="224" href="#224">224</a>         <em class="jxr_comment">// Pre-load the element to look for in the cache</em>
+<a class="jxr_linenumber" name="225" href="#225">225</a>         Table htable = hBaseUtils.getConnection().getTable(TableName.valueOf(TEST_TABLE));
+<a class="jxr_linenumber" name="226" href="#226">226</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(htable);
+<a class="jxr_linenumber" name="227" href="#227">227</a>         HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier, CELL_ST);
+<a class="jxr_linenumber" name="228" href="#228">228</a>         Map&lt;Long, Long&gt; fakeCache = Maps.newHashMap();
+<a class="jxr_linenumber" name="229" href="#229">229</a>         fakeCache.put(CELL_ST, CELL_CT);
+<a class="jxr_linenumber" name="230" href="#230">230</a> 
+<a class="jxr_linenumber" name="231" href="#231">231</a>         <em class="jxr_comment">// Then test that locator finds it in the cache</em>
+<a class="jxr_linenumber" name="232" href="#232">232</a>         CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId, fakeCache);
+<a class="jxr_linenumber" name="233" href="#233">233</a>         CommitTimestamp ct = table.locateCellCommitTimestamp(CELL_ST, tm.tsoClient.getEpoch(), ctLocator);
+<a class="jxr_linenumber" name="234" href="#234">234</a>         assertTrue(ct.isValid());
+<a class="jxr_linenumber" name="235" href="#235">235</a>         assertEquals(ct.getValue(), CELL_CT);
+<a class="jxr_linenumber" name="236" href="#236">236</a>         assertTrue(ct.getLocation().compareTo(CACHE) == 0);
 <a class="jxr_linenumber" name="237" href="#237">237</a> 
-<a class="jxr_linenumber" name="238" href="#238">238</a>     <em class="jxr_comment">// Tests step 2 in AbstractTransactionManager.locateCellCommitTimestamp()</em>
-<a class="jxr_linenumber" name="239" href="#239">239</a>     <em class="jxr_comment">// Note: This test is very similar to testCrashAfterCommit() above so</em>
-<a class="jxr_linenumber" name="240" href="#240">240</a>     <em class="jxr_comment">// maybe we should merge them in this test, adding the missing assertions</em>
-<a class="jxr_linenumber" name="241" href="#241">241</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellCommitTimestampIsLocatedInCommitTable(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="243" href="#243">243</a> 
-<a class="jxr_linenumber" name="244" href="#244">244</a>         PostCommitActions syncPostCommitter =
-<a class="jxr_linenumber" name="245" href="#245">245</a>                 spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), getCommitTable(context).getClient()));
-<a class="jxr_linenumber" name="246" href="#246">246</a>         AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager(context, syncPostCommitter);
-<a class="jxr_linenumber" name="247" href="#247">247</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
-<a class="jxr_linenumber" name="248" href="#248">248</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="249" href="#249">249</a> 
-<a class="jxr_linenumber" name="250" href="#250">250</a>         <strong class="jxr_keyword">try</strong> (TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="251" href="#251">251</a>             <em class="jxr_comment">// Commit a transaction that is broken on commit to avoid</em>
-<a class="jxr_linenumber" name="252" href="#252">252</a>             <em class="jxr_comment">// write to the shadow cells and avoid cleaning the commit table</em>
-<a class="jxr_linenumber" name="253" href="#253">253</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="254" href="#254">254</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="255" href="#255">255</a>             put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="256" href="#256">256</a>             table.put(tx1, put);
-<a class="jxr_linenumber" name="257" href="#257">257</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="258" href="#258">258</a>                 tm.commit(tx1);
-<a class="jxr_linenumber" name="259" href="#259">259</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a>                 <em class="jxr_comment">// Do nothing</em>
-<a class="jxr_linenumber" name="261" href="#261">261</a>             }
-<a class="jxr_linenumber" name="262" href="#262">262</a> 
-<a class="jxr_linenumber" name="263" href="#263">263</a>             <em class="jxr_comment">// Test the locator finds the appropriate data in the commit table</em>
-<a class="jxr_linenumber" name="264" href="#264">264</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table.getHTable(), row1, family, qualifier,
-<a class="jxr_linenumber" name="265" href="#265">265</a>                     tx1.getStartTimestamp());
-<a class="jxr_linenumber" name="266" href="#266">266</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
-<a class="jxr_linenumber" name="267" href="#267">267</a>                     Maps.&lt;Long, Long&gt;newHashMap());
-<a class="jxr_linenumber" name="268" href="#268">268</a>             CommitTimestamp ct = tm.locateCellCommitTimestamp(tx1.getStartTimestamp(), tm.tsoClient.getEpoch(),
-<a class="jxr_linenumber" name="269" href="#269">269</a>                     ctLocator);
-<a class="jxr_linenumber" name="270" href="#270">270</a>             assertTrue(ct.isValid());
-<a class="jxr_linenumber" name="271" href="#271">271</a>             <strong class="jxr_keyword">long</strong> expectedCommitTS = tx1.getStartTimestamp() + 1;
-<a class="jxr_linenumber" name="272" href="#272">272</a>             assertEquals(ct.getValue(), expectedCommitTS);
-<a class="jxr_linenumber" name="273" href="#273">273</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE) == 0);
-<a class="jxr_linenumber" name="274" href="#274">274</a>         }
-<a class="jxr_linenumber" name="275" href="#275">275</a> 
-<a class="jxr_linenumber" name="276" href="#276">276</a>     }
+<a class="jxr_linenumber" name="238" href="#238">238</a>     }
+<a class="jxr_linenumber" name="239" href="#239">239</a> 
+<a class="jxr_linenumber" name="240" href="#240">240</a>     <em class="jxr_comment">// Tests step 2 in AbstractTransactionManager.locateCellCommitTimestamp()</em>
+<a class="jxr_linenumber" name="241" href="#241">241</a>     <em class="jxr_comment">// Note: This test is very similar to testCrashAfterCommit() above so</em>
+<a class="jxr_linenumber" name="242" href="#242">242</a>     <em class="jxr_comment">// maybe we should merge them in this test, adding the missing assertions</em>
+<a class="jxr_linenumber" name="243" href="#243">243</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="244" href="#244">244</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellCommitTimestampIsLocatedInCommitTable(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="245" href="#245">245</a> 
+<a class="jxr_linenumber" name="246" href="#246">246</a>         PostCommitActions syncPostCommitter =
+<a class="jxr_linenumber" name="247" href="#247">247</a>                 spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), getCommitTable(context).getClient()));
+<a class="jxr_linenumber" name="248" href="#248">248</a>         AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager(context, syncPostCommitter);
+<a class="jxr_linenumber" name="249" href="#249">249</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
+<a class="jxr_linenumber" name="250" href="#250">250</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="251" href="#251">251</a> 
+<a class="jxr_linenumber" name="252" href="#252">252</a>         <strong class="jxr_keyword">try</strong> (TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE, tm.getCommitTableClient()))) {
+<a class="jxr_linenumber" name="253" href="#253">253</a>             <em class="jxr_comment">// Commit a transaction that is broken on commit to avoid</em>
+<a class="jxr_linenumber" name="254" href="#254">254</a>             <em class="jxr_comment">// write to the shadow cells and avoid cleaning the commit table</em>
+<a class="jxr_linenumber" name="255" href="#255">255</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="256" href="#256">256</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="257" href="#257">257</a>             put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="258" href="#258">258</a>             table.put(tx1, put);
+<a class="jxr_linenumber" name="259" href="#259">259</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="260" href="#260">260</a>                 tm.commit(tx1);
+<a class="jxr_linenumber" name="261" href="#261">261</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
+<a class="jxr_linenumber" name="262" href="#262">262</a>                 <em class="jxr_comment">// Do nothing</em>
+<a class="jxr_linenumber" name="263" href="#263">263</a>             }
+<a class="jxr_linenumber" name="264" href="#264">264</a> 
+<a class="jxr_linenumber" name="265" href="#265">265</a>             <em class="jxr_comment">// Test the locator finds the appropriate data in the commit table</em>
+<a class="jxr_linenumber" name="266" href="#266">266</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier,
+<a class="jxr_linenumber" name="267" href="#267">267</a>                     tx1.getStartTimestamp());
+<a class="jxr_linenumber" name="268" href="#268">268</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
+<a class="jxr_linenumber" name="269" href="#269">269</a>                     Maps.&lt;Long, Long&gt;newHashMap());
+<a class="jxr_linenumber" name="270" href="#270">270</a>             CommitTimestamp ct = table.locateCellCommitTimestamp(tx1.getStartTimestamp(), tm.tsoClient.getEpoch(),
+<a class="jxr_linenumber" name="271" href="#271">271</a>                     ctLocator);
+<a class="jxr_linenumber" name="272" href="#272">272</a>             assertTrue(ct.isValid());
+<a class="jxr_linenumber" name="273" href="#273">273</a>             <strong class="jxr_keyword">long</strong> expectedCommitTS = tx1.getStartTimestamp() + AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="274" href="#274">274</a>             assertEquals(ct.getValue(), expectedCommitTS);
+<a class="jxr_linenumber" name="275" href="#275">275</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE) == 0);
+<a class="jxr_linenumber" name="276" href="#276">276</a>         }
 <a class="jxr_linenumber" name="277" href="#277">277</a> 
-<a class="jxr_linenumber" name="278" href="#278">278</a>     <em class="jxr_comment">// Tests step 3 in AbstractTransactionManager.locateCellCommitTimestamp()</em>
-<a class="jxr_linenumber" name="279" href="#279">279</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="280" href="#280">280</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellCommitTimestampIsLocatedInShadowCells(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="281" href="#281">281</a> 
-<a class="jxr_linenumber" name="282" href="#282">282</a>         HBaseTransactionManager tm = (HBaseTransactionManager) newTransactionManager(context);
+<a class="jxr_linenumber" name="278" href="#278">278</a>     }
+<a class="jxr_linenumber" name="279" href="#279">279</a> 
+<a class="jxr_linenumber" name="280" href="#280">280</a>     <em class="jxr_comment">// Tests step 3 in AbstractTransactionManager.locateCellCommitTimestamp()</em>
+<a class="jxr_linenumber" name="281" href="#281">281</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="282" href="#282">282</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellCommitTimestampIsLocatedInShadowCells(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="283" href="#283">283</a> 
-<a class="jxr_linenumber" name="284" href="#284">284</a>         <strong class="jxr_keyword">try</strong> (TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="285" href="#285">285</a>             <em class="jxr_comment">// Commit a transaction to add ST/CT in commit table</em>
-<a class="jxr_linenumber" name="286" href="#286">286</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="287" href="#287">287</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="288" href="#288">288</a>             put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="289" href="#289">289</a>             table.put(tx1, put);
-<a class="jxr_linenumber" name="290" href="#290">290</a>             tm.commit(tx1);
-<a class="jxr_linenumber" name="291" href="#291">291</a>             <em class="jxr_comment">// Upon commit, the commit data should be in the shadow cells</em>
-<a class="jxr_linenumber" name="292" href="#292">292</a> 
-<a class="jxr_linenumber" name="293" href="#293">293</a>             <em class="jxr_comment">// Test the locator finds the appropriate data in the shadow cells</em>
-<a class="jxr_linenumber" name="294" href="#294">294</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table.getHTable(), row1, family, qualifier,
-<a class="jxr_linenumber" name="295" href="#295">295</a>                     tx1.getStartTimestamp());
-<a class="jxr_linenumber" name="296" href="#296">296</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
-<a class="jxr_linenumber" name="297" href="#297">297</a>                     Maps.&lt;Long, Long&gt;newHashMap());
-<a class="jxr_linenumber" name="298" href="#298">298</a>             CommitTimestamp ct = tm.locateCellCommitTimestamp(tx1.getStartTimestamp(), tm.tsoClient.getEpoch(),
-<a class="jxr_linenumber" name="299" href="#299">299</a>                     ctLocator);
-<a class="jxr_linenumber" name="300" href="#300">300</a>             assertTrue(ct.isValid());
-<a class="jxr_linenumber" name="301" href="#301">301</a>             assertEquals(ct.getValue(), tx1.getCommitTimestamp());
-<a class="jxr_linenumber" name="302" href="#302">302</a>             assertTrue(ct.getLocation().compareTo(SHADOW_CELL) == 0);
-<a class="jxr_linenumber" name="303" href="#303">303</a>         }
-<a class="jxr_linenumber" name="304" href="#304">304</a> 
-<a class="jxr_linenumber" name="305" href="#305">305</a>     }
+<a class="jxr_linenumber" name="284" href="#284">284</a>         HBaseTransactionManager tm = (HBaseTransactionManager) newTransactionManager(context);
+<a class="jxr_linenumber" name="285" href="#285">285</a> 
+<a class="jxr_linenumber" name="286" href="#286">286</a>         <strong class="jxr_keyword">try</strong> (TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE, tm.getCommitTableClient()))) {
+<a class="jxr_linenumber" name="287" href="#287">287</a>             <em class="jxr_comment">// Commit a transaction to addColumn ST/CT in commit table</em>
+<a class="jxr_linenumber" name="288" href="#288">288</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="289" href="#289">289</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="290" href="#290">290</a>             put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="291" href="#291">291</a>             table.put(tx1, put);
+<a class="jxr_linenumber" name="292" href="#292">292</a>             tm.commit(tx1);
+<a class="jxr_linenumber" name="293" href="#293">293</a>             <em class="jxr_comment">// Upon commit, the commit data should be in the shadow cells</em>
+<a class="jxr_linenumber" name="294" href="#294">294</a> 
+<a class="jxr_linenumber" name="295" href="#295">295</a>             <em class="jxr_comment">// Test the locator finds the appropriate data in the shadow cells</em>
+<a class="jxr_linenumber" name="296" href="#296">296</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier,
+<a class="jxr_linenumber" name="297" href="#297">297</a>                     tx1.getStartTimestamp());
+<a class="jxr_linenumber" name="298" href="#298">298</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
+<a class="jxr_linenumber" name="299" href="#299">299</a>                     Maps.&lt;Long, Long&gt;newHashMap());
+<a class="jxr_linenumber" name="300" href="#300">300</a>             CommitTimestamp ct = table.locateCellCommitTimestamp(tx1.getStartTimestamp(), tm.tsoClient.getEpoch(),
+<a class="jxr_linenumber" name="301" href="#301">301</a>                     ctLocator);
+<a class="jxr_linenumber" name="302" href="#302">302</a>             assertTrue(ct.isValid());
+<a class="jxr_linenumber" name="303" href="#303">303</a>             assertEquals(ct.getValue(), tx1.getCommitTimestamp());
+<a class="jxr_linenumber" name="304" href="#304">304</a>             assertTrue(ct.getLocation().compareTo(SHADOW_CELL) == 0);
+<a class="jxr_linenumber" name="305" href="#305">305</a>         }
 <a class="jxr_linenumber" name="306" href="#306">306</a> 
-<a class="jxr_linenumber" name="307" href="#307">307</a>     <em class="jxr_comment">// Tests step 4 in AbstractTransactionManager.locateCellCommitTimestamp()</em>
-<a class="jxr_linenumber" name="308" href="#308">308</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="309" href="#309">309</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellFromTransactionInPreviousEpochGetsInvalidComitTimestamp(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="310" href="#310">310</a> 
-<a class="jxr_linenumber" name="311" href="#311">311</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> CURRENT_EPOCH_FAKE = 1000L;
+<a class="jxr_linenumber" name="307" href="#307">307</a>     }
+<a class="jxr_linenumber" name="308" href="#308">308</a> 
+<a class="jxr_linenumber" name="309" href="#309">309</a>     <em class="jxr_comment">// Tests step 4 in AbstractTransactionManager.locateCellCommitTimestamp()</em>
+<a class="jxr_linenumber" name="310" href="#310">310</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="311" href="#311">311</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellFromTransactionInPreviousEpochGetsInvalidComitTimestamp(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="312" href="#312">312</a> 
-<a class="jxr_linenumber" name="313" href="#313">313</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
-<a class="jxr_linenumber" name="314" href="#314">314</a>         AbstractTransactionManager tm = spy((AbstractTransactionManager) newTransactionManager(context, commitTableClient));
-<a class="jxr_linenumber" name="315" href="#315">315</a>         <em class="jxr_comment">// The following lines allow to reach step 4)</em>
-<a class="jxr_linenumber" name="316" href="#316">316</a>         <em class="jxr_comment">// in AbstractTransactionManager.locateCellCommitTimestamp()</em>
-<a class="jxr_linenumber" name="317" href="#317">317</a>         SettableFuture&lt;Optional&lt;CommitTimestamp&gt;&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="318" href="#318">318</a>         f.set(Optional.&lt;CommitTimestamp&gt;absent());
-<a class="jxr_linenumber" name="319" href="#319">319</a>         doReturn(f).when(commitTableClient).getCommitTimestamp(any(Long.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="320" href="#320">320</a>         doReturn(Optional.&lt;CommitTimestamp&gt;absent()).when(tm).readCommitTimestampFromShadowCell(any(Long.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="321" href="#321">321</a>                 any(CommitTimestampLocator.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="313" href="#313">313</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> CURRENT_EPOCH_FAKE = 1000L * AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="314" href="#314">314</a> 
+<a class="jxr_linenumber" name="315" href="#315">315</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
+<a class="jxr_linenumber" name="316" href="#316">316</a>         AbstractTransactionManager tm = spy((AbstractTransactionManager) newTransactionManager(context, commitTableClient));
+<a class="jxr_linenumber" name="317" href="#317">317</a>         <em class="jxr_comment">// The following lines allow to reach step 4)</em>
+<a class="jxr_linenumber" name="318" href="#318">318</a>         <em class="jxr_comment">// in AbstractTransactionManager.locateCellCommitTimestamp()</em>
+<a class="jxr_linenumber" name="319" href="#319">319</a>         SettableFuture&lt;Optional&lt;CommitTimestamp&gt;&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="320" href="#320">320</a>         f.set(Optional.&lt;CommitTimestamp&gt;absent());
+<a class="jxr_linenumber" name="321" href="#321">321</a>         doReturn(f).when(commitTableClient).getCommitTimestamp(any(Long.<strong class="jxr_keyword">class</strong>));
 <a class="jxr_linenumber" name="322" href="#322">322</a> 
-<a class="jxr_linenumber" name="323" href="#323">323</a>         <strong class="jxr_keyword">try</strong> (TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="324" href="#324">324</a> 
-<a class="jxr_linenumber" name="325" href="#325">325</a>             <em class="jxr_comment">// Commit a transaction to add ST/CT in commit table</em>
-<a class="jxr_linenumber" name="326" href="#326">326</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="327" href="#327">327</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="328" href="#328">328</a>             put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="329" href="#329">329</a>             table.put(tx1, put);
-<a class="jxr_linenumber" name="330" href="#330">330</a>             tm.commit(tx1);
+<a class="jxr_linenumber" name="323" href="#323">323</a> 
+<a class="jxr_linenumber" name="324" href="#324">324</a>         <strong class="jxr_keyword">try</strong> (TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE, tm.getCommitTableClient()))) {
+<a class="jxr_linenumber" name="325" href="#325">325</a> 
+<a class="jxr_linenumber" name="326" href="#326">326</a>             <em class="jxr_comment">// Commit a transaction to addColumn ST/CT in commit table</em>
+<a class="jxr_linenumber" name="327" href="#327">327</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="328" href="#328">328</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="329" href="#329">329</a>             put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="330" href="#330">330</a>             table.put(tx1, put);
 <a class="jxr_linenumber" name="331" href="#331">331</a>             <em class="jxr_comment">// Upon commit, the commit data should be in the shadow cells</em>
 <a class="jxr_linenumber" name="332" href="#332">332</a> 
 <a class="jxr_linenumber" name="333" href="#333">333</a>             <em class="jxr_comment">// Test a transaction in the previous epoch gets an InvalidCommitTimestamp class</em>
-<a class="jxr_linenumber" name="334" href="#334">334</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table.getHTable(), row1, family, qualifier,
+<a class="jxr_linenumber" name="334" href="#334">334</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier,
 <a class="jxr_linenumber" name="335" href="#335">335</a>                     tx1.getStartTimestamp());
 <a class="jxr_linenumber" name="336" href="#336">336</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
 <a class="jxr_linenumber" name="337" href="#337">337</a>                     Maps.&lt;Long, Long&gt;newHashMap());
 <a class="jxr_linenumber" name="338" href="#338">338</a>             <em class="jxr_comment">// Fake the current epoch to simulate a newer TSO</em>
-<a class="jxr_linenumber" name="339" href="#339">339</a>             CommitTimestamp ct = tm.locateCellCommitTimestamp(tx1.getStartTimestamp(), CURRENT_EPOCH_FAKE, ctLocator);
+<a class="jxr_linenumber" name="339" href="#339">339</a>             CommitTimestamp ct = table.locateCellCommitTimestamp(tx1.getStartTimestamp(), CURRENT_EPOCH_FAKE, ctLocator);
 <a class="jxr_linenumber" name="340" href="#340">340</a>             assertFalse(ct.isValid());
 <a class="jxr_linenumber" name="341" href="#341">341</a>             assertEquals(ct.getValue(), CommitTable.INVALID_TRANSACTION_MARKER);
 <a class="jxr_linenumber" name="342" href="#342">342</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE) == 0);
@@ -369,103 +369,97 @@
 <a class="jxr_linenumber" name="359" href="#359">359</a>         SettableFuture&lt;Optional&lt;CommitTimestamp&gt;&gt; f = SettableFuture.create();
 <a class="jxr_linenumber" name="360" href="#360">360</a>         f.set(Optional.&lt;CommitTimestamp&gt;absent());
 <a class="jxr_linenumber" name="361" href="#361">361</a>         doReturn(f).doCallRealMethod().when(commitTableClient).getCommitTimestamp(any(Long.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="362" href="#362">362</a>         doReturn(Optional.&lt;CommitTimestamp&gt;absent()).when(tm).readCommitTimestampFromShadowCell(any(Long.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="363" href="#363">363</a>                 any(CommitTimestampLocator.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="362" href="#362">362</a> 
+<a class="jxr_linenumber" name="363" href="#363">363</a>         <strong class="jxr_keyword">try</strong> (TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE, tm.getCommitTableClient()))) {
 <a class="jxr_linenumber" name="364" href="#364">364</a> 
-<a class="jxr_linenumber" name="365" href="#365">365</a>         <strong class="jxr_keyword">try</strong> (TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="366" href="#366">366</a> 
-<a class="jxr_linenumber" name="367" href="#367">367</a>             <em class="jxr_comment">// Commit a transaction that is broken on commit to avoid</em>
-<a class="jxr_linenumber" name="368" href="#368">368</a>             <em class="jxr_comment">// write to the shadow cells and avoid cleaning the commit table</em>
-<a class="jxr_linenumber" name="369" href="#369">369</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="370" href="#370">370</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="371" href="#371">371</a>             put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="372" href="#372">372</a>             table.put(tx1, put);
-<a class="jxr_linenumber" name="373" href="#373">373</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="374" href="#374">374</a>                 tm.commit(tx1);
-<a class="jxr_linenumber" name="375" href="#375">375</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
-<a class="jxr_linenumber" name="376" href="#376">376</a>                 <em class="jxr_comment">// Do nothing</em>
-<a class="jxr_linenumber" name="377" href="#377">377</a>             }
-<a class="jxr_linenumber" name="378" href="#378">378</a> 
-<a class="jxr_linenumber" name="379" href="#379">379</a>             <em class="jxr_comment">// Test the locator finds the appropriate data in the commit table</em>
-<a class="jxr_linenumber" name="380" href="#380">380</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table.getHTable(), row1, family, qualifier,
-<a class="jxr_linenumber" name="381" href="#381">381</a>                     tx1.getStartTimestamp());
-<a class="jxr_linenumber" name="382" href="#382">382</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
-<a class="jxr_linenumber" name="383" href="#383">383</a>                     Maps.&lt;Long, Long&gt;newHashMap());
-<a class="jxr_linenumber" name="384" href="#384">384</a>             CommitTimestamp ct = tm.locateCellCommitTimestamp(tx1.getStartTimestamp(), tm.tsoClient.getEpoch(),
-<a class="jxr_linenumber" name="385" href="#385">385</a>                     ctLocator);
-<a class="jxr_linenumber" name="386" href="#386">386</a>             assertTrue(ct.isValid());
-<a class="jxr_linenumber" name="387" href="#387">387</a>             assertEquals(ct.getValue(), tx1.getCommitTimestamp());
-<a class="jxr_linenumber" name="388" href="#388">388</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE) == 0);
-<a class="jxr_linenumber" name="389" href="#389">389</a>         }
+<a class="jxr_linenumber" name="365" href="#365">365</a>             <em class="jxr_comment">// Commit a transaction that is broken on commit to avoid</em>
+<a class="jxr_linenumber" name="366" href="#366">366</a>             <em class="jxr_comment">// write to the shadow cells and avoid cleaning the commit table</em>
+<a class="jxr_linenumber" name="367" href="#367">367</a>             HBaseTransaction tx1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="368" href="#368">368</a>             Put put = <strong class="jxr_keyword">new</strong> Put(row1);
+<a class="jxr_linenumber" name="369" href="#369">369</a>             put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="370" href="#370">370</a>             table.put(tx1, put);
+<a class="jxr_linenumber" name="371" href="#371">371</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="372" href="#372">372</a>                 tm.commit(tx1);
+<a class="jxr_linenumber" name="373" href="#373">373</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
+<a class="jxr_linenumber" name="374" href="#374">374</a>                 <em class="jxr_comment">// Do nothing</em>
+<a class="jxr_linenumber" name="375" href="#375">375</a>             }
+<a class="jxr_linenumber" name="376" href="#376">376</a> 
+<a class="jxr_linenumber" name="377" href="#377">377</a>             <em class="jxr_comment">// Test the locator finds the appropriate data in the commit table</em>
+<a class="jxr_linenumber" name="378" href="#378">378</a>             HBaseCellId hBaseCellId = <strong class="jxr_keyword">new</strong> HBaseCellId(table, row1, family, qualifier,
+<a class="jxr_linenumber" name="379" href="#379">379</a>                     tx1.getStartTimestamp());
+<a class="jxr_linenumber" name="380" href="#380">380</a>             CommitTimestampLocator ctLocator = <strong class="jxr_keyword">new</strong> CommitTimestampLocatorImpl(hBaseCellId,
+<a class="jxr_linenumber" name="381" href="#381">381</a>                     Maps.&lt;Long, Long&gt;newHashMap());
+<a class="jxr_linenumber" name="382" href="#382">382</a>             CommitTimestamp ct = table.locateCellCommitTimestamp(tx1.getStartTimestamp(), tm.tsoClient.getEpoch(),
+<a class="jxr_linenumber" name="383" href="#383">383</a>                     ctLocator);
+<a class="jxr_linenumber" name="384" href="#384">384</a>             assertTrue(ct.isValid());
+<a class="jxr_linenumber" name="385" href="#385">385</a>             assertEquals(ct.getValue(), tx1.getCommitTimestamp());
+<a class="jxr_linenumber" name="386" href="#386">386</a>             assertTrue(ct.getLocation().compareTo(COMMIT_TABLE

<TRUNCATED>


[47/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index ef9d9e4..3760aee 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -214,31 +214,31 @@
 <div class="source"><pre class="prettyprint">&lt;dependency&gt;
   &lt;groupId&gt;org.apache.omid&lt;/groupId&gt;
   &lt;artifactId&gt;omid&lt;/artifactId&gt;
-  &lt;version&gt;0.9.0.0&lt;/version&gt;
+  &lt;version&gt;0.8.2.11-SNAPSHOT&lt;/version&gt;
   &lt;type&gt;pom&lt;/type&gt;
 &lt;/dependency&gt;</pre></div></div>
 <div class="section">
 <h3><a name="Apache_Buildr"></a>Apache Buildr</h3><a name="Apache_Buildr"></a>
-<div class="source"><pre class="prettyprint">'org.apache.omid:omid:pom:0.9.0.0'</pre></div></div>
+<div class="source"><pre class="prettyprint">'org.apache.omid:omid:pom:0.8.2.11-SNAPSHOT'</pre></div></div>
 <div class="section">
 <h3><a name="Apache_Ivy"></a>Apache Ivy</h3><a name="Apache_Ivy"></a>
-<div class="source"><pre class="prettyprint">&lt;dependency org=&quot;org.apache.omid&quot; name=&quot;omid&quot; rev=&quot;0.9.0.0&quot;&gt;
+<div class="source"><pre class="prettyprint">&lt;dependency org=&quot;org.apache.omid&quot; name=&quot;omid&quot; rev=&quot;0.8.2.11-SNAPSHOT&quot;&gt;
   &lt;artifact name=&quot;omid&quot; type=&quot;pom&quot; /&gt;
 &lt;/dependency&gt;</pre></div></div>
 <div class="section">
 <h3><a name="Groovy_Grape"></a>Groovy Grape</h3><a name="Groovy_Grape"></a>
 <div class="source"><pre class="prettyprint">@Grapes(
-@Grab(group='org.apache.omid', module='omid', version='0.9.0.0')
+@Grab(group='org.apache.omid', module='omid', version='0.8.2.11-SNAPSHOT')
 )</pre></div></div>
 <div class="section">
 <h3><a name="GradleGrails"></a>Gradle/Grails</h3><a name="GradleGrails"></a>
-<div class="source"><pre class="prettyprint">compile 'org.apache.omid:omid:0.9.0.0'</pre></div></div>
+<div class="source"><pre class="prettyprint">compile 'org.apache.omid:omid:0.8.2.11-SNAPSHOT'</pre></div></div>
 <div class="section">
 <h3><a name="Scala_SBT"></a>Scala SBT</h3><a name="Scala_SBT"></a>
-<div class="source"><pre class="prettyprint">libraryDependencies += &quot;org.apache.omid&quot; % &quot;omid&quot; % &quot;0.9.0.0&quot;</pre></div></div>
+<div class="source"><pre class="prettyprint">libraryDependencies += &quot;org.apache.omid&quot; % &quot;omid&quot; % &quot;0.8.2.11-SNAPSHOT&quot;</pre></div></div>
 <div class="section">
 <h3><a name="Leiningen"></a>Leiningen</h3><a name="Leiningen"></a>
-<div class="source"><pre class="prettyprint">[org.apache.omid/omid &quot;0.9.0.0&quot;]</pre></div></div></div>
+<div class="source"><pre class="prettyprint">[org.apache.omid/omid &quot;0.8.2.11-SNAPSHOT&quot;]</pre></div></div></div>
                   </div>
           </div>
 

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 90d9fbf..ed71f63 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -222,25 +222,25 @@
 <tr class="b">
 <td>org.apache.hbase</td>
 <td><a class="externalLink" href="http://hbase.apache.org/hbase-client">hbase-client</a></td>
-<td>1.3.1</td>
+<td>1.2.5</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
 <tr class="a">
 <td>org.apache.hbase</td>
 <td><a class="externalLink" href="http://hbase.apache.org/hbase-common">hbase-common</a></td>
-<td>1.3.1</td>
+<td>1.2.5</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
 <tr class="b">
 <td>org.apache.hbase</td>
 <td><a class="externalLink" href="http://hbase.apache.org/hbase-server">hbase-server</a></td>
-<td>1.3.1</td>
+<td>1.2.5</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
 <tr class="a">
 <td>org.apache.hbase</td>
 <td><a class="externalLink" href="http://hbase.apache.org/hbase-testing-util">hbase-testing-util</a></td>
-<td>1.3.1</td>
+<td>1.2.5</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr></table></div></div>
                   </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/distribution-management.html
----------------------------------------------------------------------
diff --git a/distribution-management.html b/distribution-management.html
index 0a44e5e..711bd6a 100644
--- a/distribution-management.html
+++ b/distribution-management.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Distribution Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 693f38b..1a8c8b4 100644
--- a/index.html
+++ b/index.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; What is Omid?</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>What is Omid?</h1>
+            <h1>What is Omid?</h1>
 <p><b>Apache Omid (Optimistically transaction Management In Datastores)</b> is a flexible, reliable, high performant and scalable transactional framework that allows Big Data applications to execute ACID transactions on top of MVCC key/value NoSQL datastores.</p>
 <p>The current implementation provides multi-row transactions on top of Apache HBase, but Omid&#x2019;s design is flexible enough to support other datastore implementations as long as they provide MVCC features in their API.</p>
 <p>The following sections introduce the motivation behind Omid and its high-level architecture and basic concepts. If you want to jump to a more hands-on approach to Omid, please jump to the <a href="quickstart.html">Quickstart</a> section. On the other hand, if you want more information about Omid&#x2019;s design and its internals, please refer to the sections in the Technical Documentation menuf.</p>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 1a62fda..a10d07f 100644
--- a/license.html
+++ b/license.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/mailing-lists.html
----------------------------------------------------------------------
diff --git a/mailing-lists.html b/mailing-lists.html
index e33d69e..f8a58ce 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Mailing Lists @ Apache Incubator</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>Mailing Lists @ Apache Incubator</h1>
+            <h1>Mailing Lists @ Apache Incubator</h1>
 
 <table border="0" class="table table-striped">
   <thead>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/modules.html
----------------------------------------------------------------------
diff --git a/modules.html b/modules.html
index 0140730..f67b3d0 100644
--- a/modules.html
+++ b/modules.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Modules</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/omid-components.html
----------------------------------------------------------------------
diff --git a/omid-components.html b/omid-components.html
index e4187b4..0b508af 100644
--- a/omid-components.html
+++ b/omid-components.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Omid Architecture and Component Description</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>Omid Architecture and Component Description</h1>
+            <h1>Omid Architecture and Component Description</h1>
 <p>The following figure depicts the current Omid architecture presented in the section presenting Omid:</p>
 <p><img src="images/architecture.png" alt="Omid&rsquo;s architecture" /></p>
 <p>The following sections describe more in deep the most important components and elements in the Omid architecture.</p>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index df8e3b7..a3bdd10 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 9d27f28..93a83ec 100644
--- a/plugins.html
+++ b/plugins.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -247,14 +247,10 @@
 <td><a class="externalLink" href="http://maven.apache.org/surefire/maven-surefire-report-plugin/">maven-surefire-report-plugin</a></td>
 <td>2.19</td></tr>
 <tr class="b">
-<td>org.apache.rat</td>
-<td><a class="externalLink" href="http://creadur.apache.org/rat/apache-rat-plugin/">apache-rat-plugin</a></td>
-<td>0.12</td></tr>
-<tr class="a">
 <td>org.codehaus.mojo</td>
 <td><a class="externalLink" href="http://mojo.codehaus.org/cobertura-maven-plugin/">cobertura-maven-plugin</a></td>
 <td>2.7</td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.eluder.coveralls</td>
 <td><a class="externalLink" href="https://github.com/trautonen/coveralls-maven-plugin">coveralls-maven-plugin</a></td>
 <td>4.1.0</td></tr></table></div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/pmd.html
----------------------------------------------------------------------
diff --git a/pmd.html b/pmd.html
index 4db2aa4..1645002 100644
--- a/pmd.html
+++ b/pmd.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; PMD Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -234,15 +234,6 @@
 <td>Useless parentheses.</td>
 <td><a href="./xref/org/apache/omid/benchmarks/utils/ZipfianGenerator.html#L234">234</a></td></tr></table></div>
 <div class="section">
-<h3><a name="Common_-_orgapacheomidNetworkUtils.java"></a>Common - org/apache/omid/NetworkUtils.java</h3>
-<table border="0" class="table table-striped">
-<tr class="b">
-<th>Violation</th>
-<th>Line</th></tr>
-<tr class="a">
-<td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/NetworkUtils.html#L44">44</a></td></tr></table></div>
-<div class="section">
 <h3><a name="HBase_Client_-_orgapacheomidtransactionHBaseAsyncPostCommitter.java"></a>HBase Client - org/apache/omid/transaction/HBaseAsyncPostCommitter.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
@@ -259,7 +250,7 @@
 <th>Line</th></tr>
 <tr class="a">
 <td>Avoid unused private fields such as 'metrics'.</td>
-<td><a href="./xref/org/apache/omid/transaction/HBaseSyncPostCommitter.html#L40">40</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/transaction/HBaseSyncPostCommitter.html#L41">41</a></td></tr></table></div>
 <div class="section">
 <h3><a name="HBase_Client_-_orgapacheomidtransactionHBaseTransactionManager.java"></a>HBase Client - org/apache/omid/transaction/HBaseTransactionManager.java</h3>
 <table border="0" class="table table-striped">
@@ -268,82 +259,193 @@
 <th>Line</th></tr>
 <tr class="a">
 <td>Avoid unused private fields such as 'LOG'.</td>
-<td><a href="./xref/org/apache/omid/transaction/HBaseTransactionManager.html#L48">48</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/transaction/HBaseTransactionManager.html#L46">46</a></td></tr></table></div>
 <div class="section">
-<h3><a name="HBase_Client_-_orgapacheomidtransactionTTable.java"></a>HBase Client - org/apache/omid/transaction/TTable.java</h3>
+<h3><a name="HBase_Client_-_orgapacheomidtransactionSnapshotFilter.java"></a>HBase Client - org/apache/omid/transaction/SnapshotFilter.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
 <th>Violation</th>
 <th>Line</th></tr>
 <tr class="a">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L35">35</a></td></tr>
+<tr class="b">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L37">37</a></td></tr>
+<tr class="a">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L39">39</a>&#x2013;<a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L40">40</a></td></tr>
+<tr class="b">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L42">42</a></td></tr>
+<tr class="a">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L44">44</a>&#x2013;<a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L45">45</a></td></tr>
+<tr class="b">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L47">47</a>&#x2013;<a href="./xref/org/apache/omid/transaction/SnapshotFilter.html#L48">48</a></td></tr></table></div>
+<div class="section">
+<h3><a name="HBase_Client_-_orgapacheomidtransactionSnapshotFilterImpl.java"></a>HBase Client - org/apache/omid/transaction/SnapshotFilterImpl.java</h3>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Violation</th>
+<th>Line</th></tr>
+<tr class="b">
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilterImpl.html#L98">98</a></td></tr>
+<tr class="a">
+<td>Avoid unused method parameters such as 'transaction'.</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilterImpl.html#L110">110</a></td></tr>
+<tr class="b">
+<td>Avoid unused method parameters such as 'commitCache'.</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilterImpl.html#L110">110</a></td></tr>
+<tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/transaction/TTable.html#L338">338</a></td></tr>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilterImpl.html#L265">265</a></td></tr>
 <tr class="b">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/transaction/TTable.html#L364">364</a></td></tr>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilterImpl.html#L281">281</a></td></tr>
+<tr class="a">
+<td>Avoid unused method parameters such as 'attributeMap'.</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilterImpl.html#L303">303</a></td></tr>
+<tr class="b">
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilterImpl.html#L406">406</a></td></tr>
+<tr class="a">
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/transaction/SnapshotFilterImpl.html#L455">455</a></td></tr></table></div>
+<div class="section">
+<h3><a name="HBase_Client_-_orgapacheomidtransactionTTable.java"></a>HBase Client - org/apache/omid/transaction/TTable.java</h3>
+<table border="0" class="table table-striped">
+<tr class="b">
+<th>Violation</th>
+<th>Line</th></tr>
 <tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/transaction/TTable.html#L382">382</a></td></tr>
+<td><a href="./xref/org/apache/omid/transaction/TTable.html#L105">105</a></td></tr>
 <tr class="b">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/transaction/TTable.html#L466">466</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/transaction/TTable.html#L119">119</a></td></tr></table></div>
 <div class="section">
-<h3><a name="HBase_Commit_Table_-_orgapacheomidcommittablehbaseHBaseCommitTable.java"></a>HBase Commit Table - org/apache/omid/committable/hbase/HBaseCommitTable.java</h3>
+<h3><a name="HBase_Client_-_orgapacheomidtransactionTableAccessWrapper.java"></a>HBase Client - org/apache/omid/transaction/TableAccessWrapper.java</h3>
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Violation</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L102">102</a></td></tr>
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/TableAccessWrapper.html#L34">34</a></td></tr>
+<tr class="a">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/TableAccessWrapper.html#L35">35</a></td></tr>
+<tr class="b">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/TableAccessWrapper.html#L36">36</a></td></tr>
+<tr class="a">
+<td>Avoid modifiers which are implied by the context</td>
+<td><a href="./xref/org/apache/omid/transaction/TableAccessWrapper.html#L37">37</a></td></tr></table></div>
+<div class="section">
+<h3><a name="HBase_Commit_Table_-_orgapacheomidcommittablehbaseHBaseCommitTable.java"></a>HBase Commit Table - org/apache/omid/committable/hbase/HBaseCommitTable.java</h3>
+<table border="0" class="table table-striped">
+<tr class="b">
+<th>Violation</th>
+<th>Line</th></tr>
 <tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L351">351</a></td></tr>
+<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L108">108</a></td></tr>
 <tr class="b">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L355">355</a></td></tr>
+<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L359">359</a></td></tr>
 <tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L359">359</a></td></tr>
+<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L363">363</a></td></tr>
 <tr class="b">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L406">406</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L367">367</a></td></tr>
+<tr class="a">
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/committable/hbase/HBaseCommitTable.html#L414">414</a></td></tr></table></div>
 <div class="section">
 <h3><a name="HBase_Common_-_orgapacheomidcommittablehbaseKeyGeneratorImplementations.java"></a>HBase Common - org/apache/omid/committable/hbase/KeyGeneratorImplementations.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Violation</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td>Useless parentheses.</td>
 <td><a href="./xref/org/apache/omid/committable/hbase/KeyGeneratorImplementations.html#L56">56</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>Useless parentheses.</td>
 <td><a href="./xref/org/apache/omid/committable/hbase/KeyGeneratorImplementations.html#L91">91</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>Useless parentheses.</td>
 <td><a href="./xref/org/apache/omid/committable/hbase/KeyGeneratorImplementations.html#L146">146</a></td></tr></table></div>
 <div class="section">
 <h3><a name="HBase_Common_-_orgapacheomidtransactionCellInfo.java"></a>HBase Common - org/apache/omid/transaction/CellInfo.java</h3>
 <table border="0" class="table table-striped">
+<tr class="b">
+<th>Violation</th>
+<th>Line</th></tr>
+<tr class="a">
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/transaction/CellInfo.html#L31">31</a></td></tr>
+<tr class="b">
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/transaction/CellInfo.html#L32">32</a></td></tr></table></div>
+<div class="section">
+<h3><a name="HBase_Coprocessors_-_orgapachehadoophbaseregionserverCompactorScanner.java"></a>HBase Coprocessors - org/apache/hadoop/hbase/regionserver/CompactorScanner.java</h3>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Violation</th>
+<th>Line</th></tr>
+<tr class="b">
+<td>These nested if statements could be combined</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L135">135</a>&#x2013;<a href="./xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html#L146">146</a></td></tr></table></div>
+<div class="section">
+<h3><a name="HBase_Coprocessors_-_orgapacheomidtransactionOmidSnapshotFilter.java"></a>HBase Coprocessors - org/apache/omid/transaction/OmidSnapshotFilter.java</h3>
+<table border="0" class="table table-striped">
 <tr class="a">
 <th>Violation</th>
 <th>Line</th></tr>
 <tr class="b">
+<td>Avoid unnecessary return statements</td>
+<td><a href="./xref/org/apache/omid/transaction/OmidSnapshotFilter.html#L171">171</a></td></tr>
+<tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/transaction/CellInfo.html#L31">31</a></td></tr>
+<td><a href="./xref/org/apache/omid/transaction/OmidSnapshotFilter.html#L186">186</a></td></tr></table></div>
+<div class="section">
+<h3><a name="HBase_Coprocessors_-_orgapacheomidtransactionTransactionVisibilityFilterBase.java"></a>HBase Coprocessors - org/apache/omid/transaction/TransactionVisibilityFilterBase.java</h3>
+<table border="0" class="table table-striped">
+<tr class="b">
+<th>Violation</th>
+<th>Line</th></tr>
 <tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/transaction/CellInfo.html#L32">32</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/transaction/TransactionVisibilityFilterBase.html#L117">117</a></td></tr>
+<tr class="b">
+<td>Overriding method merely calls super</td>
+<td><a href="./xref/org/apache/omid/transaction/TransactionVisibilityFilterBase.html#L232">232</a>&#x2013;<a href="./xref/org/apache/omid/transaction/TransactionVisibilityFilterBase.html#L234">234</a></td></tr></table></div>
+<div class="section">
+<h3><a name="Shims_layer_for_HBase_1.x_-_orgapacheomidHBaseShims.java"></a>Shims layer for HBase 1.x - org/apache/omid/HBaseShims.java</h3>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Violation</th>
+<th>Line</th></tr>
+<tr class="b">
+<td>Avoid unused imports such as 'org.apache.hadoop.hbase.HBaseTestingUtility'</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L21">21</a></td></tr>
+<tr class="a">
+<td>Avoid unused imports such as 'org.apache.hadoop.hbase.filter.Filter'</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L30">30</a></td></tr></table></div>
 <div class="section">
-<h3><a name="HBase_Coprocessors_-_orgapacheomidtransactionCompactorScanner.java"></a>HBase Coprocessors - org/apache/omid/transaction/CompactorScanner.java</h3>
+<h3><a name="Shims_layer_for_HBase_2.x_-_orgapacheomidHBaseShims.java"></a>Shims layer for HBase 2.x - org/apache/omid/HBaseShims.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
 <th>Violation</th>
 <th>Line</th></tr>
 <tr class="a">
-<td>These nested if statements could be combined</td>
-<td><a href="./xref/org/apache/omid/transaction/CompactorScanner.html#L137">137</a>&#x2013;<a href="./xref/org/apache/omid/transaction/CompactorScanner.html#L148">148</a></td></tr></table></div>
+<td>Avoid unused imports such as 'org.apache.hadoop.hbase.filter.Filter'</td>
+<td><a href="./xref/org/apache/omid/HBaseShims.html#L32">32</a></td></tr></table></div>
 <div class="section">
 <h3><a name="State_Machine_-_orgapachestatemachineStateMachine.java"></a>State Machine - org/apache/statemachine/StateMachine.java</h3>
 <table border="0" class="table table-striped">
@@ -354,74 +456,104 @@
 <td>Useless parentheses.</td>
 <td><a href="./xref/org/apache/statemachine/StateMachine.html#L154">154</a></td></tr></table></div>
 <div class="section">
-<h3><a name="Transaction_Client_-_orgapacheomidtransactionAbstractTransactionManager.java"></a>Transaction Client - org/apache/omid/transaction/AbstractTransactionManager.java</h3>
+<h3><a name="Transaction_Client_-_orgapacheomidtransactionAbstractTransaction.java"></a>Transaction Client - org/apache/omid/transaction/AbstractTransaction.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
 <th>Violation</th>
 <th>Line</th></tr>
 <tr class="a">
-<td>Too many static imports may lead to messy code</td>
-<td><a href="./xref/org/apache/omid/transaction/AbstractTransactionManager.html#L18">18</a>&#x2013;<a href="./xref/org/apache/omid/transaction/AbstractTransactionManager.html#L516">516</a></td></tr></table></div>
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/transaction/AbstractTransaction.html#L65">65</a></td></tr></table></div>
 <div class="section">
-<h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoBatchPoolModule.java"></a>TSO and TO Servers - org/apache/omid/tso/BatchPoolModule.java</h3>
+<h3><a name="Transaction_Client_-_orgapacheomidtsoclientTSOClient.java"></a>Transaction Client - org/apache/omid/tso/client/TSOClient.java</h3>
+<table border="0" class="table table-striped">
+<tr class="b">
+<th>Violation</th>
+<th>Line</th></tr>
+<tr class="a">
+<td>Avoid unused imports such as 'org.apache.omid.transaction.TransactionException'</td>
+<td><a href="./xref/org/apache/omid/tso/client/TSOClient.html#L26">26</a></td></tr>
+<tr class="b">
+<td>Avoid unused imports such as 'java.util.List'</td>
+<td><a href="./xref/org/apache/omid/tso/client/TSOClient.html#L62">62</a></td></tr>
+<tr class="a">
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/tso/client/TSOClient.html#L234">234</a></td></tr></table></div>
+<div class="section">
+<h3><a name="Transaction_Client_-_orgapacheomidtsoclientTSOProtocol.java"></a>Transaction Client - org/apache/omid/tso/client/TSOProtocol.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
 <th>Violation</th>
 <th>Line</th></tr>
 <tr class="a">
+<td>Avoid unused imports such as 'java.util.List'</td>
+<td><a href="./xref/org/apache/omid/tso/client/TSOProtocol.html#L20">20</a></td></tr>
+<tr class="b">
+<td>Avoid unused imports such as 'org.apache.omid.tso.client.OmidClientConfiguration.ConflictDetectionLevel'</td>
+<td><a href="./xref/org/apache/omid/tso/client/TSOProtocol.html#L23">23</a></td></tr></table></div>
+<div class="section">
+<h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoBatchPoolModule.java"></a>TSO and TO Servers - org/apache/omid/tso/BatchPoolModule.java</h3>
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Violation</th>
+<th>Line</th></tr>
+<tr class="b">
 <td>Avoid unused private fields such as 'config'.</td>
 <td><a href="./xref/org/apache/omid/tso/BatchPoolModule.html#L36">36</a></td></tr></table></div>
 <div class="section">
 <h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoCacheEvaluation.java"></a>TSO and TO Servers - org/apache/omid/tso/CacheEvaluation.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Violation</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td>Useless parentheses.</td>
 <td><a href="./xref/org/apache/omid/tso/CacheEvaluation.html#L93">93</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>Useless parentheses.</td>
 <td><a href="./xref/org/apache/omid/tso/CacheEvaluation.html#L102">102</a></td></tr></table></div>
 <div class="section">
 <h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoMonitoringContext.java"></a>TSO and TO Servers - org/apache/omid/tso/MonitoringContext.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Violation</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td>Avoid unused imports such as 'java.util.HashMap'</td>
 <td><a href="./xref/org/apache/omid/tso/MonitoringContext.html#L27">27</a></td></tr></table></div>
 <div class="section">
 <h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoPersistenceProcessorHandler.java"></a>TSO and TO Servers - org/apache/omid/tso/PersistenceProcessorHandler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Violation</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td>Avoid unused private fields such as 'LOG'.</td>
-<td><a href="./xref/org/apache/omid/tso/PersistenceProcessorHandler.html#L40">40</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/tso/PersistenceProcessorHandler.html#L38">38</a></td></tr></table></div>
 <div class="section">
 <h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoPersistenceProcessorImpl.java"></a>TSO and TO Servers - org/apache/omid/tso/PersistenceProcessorImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Violation</th>
 <th>Line</th></tr>
-<tr class="b">
-<td>Too many static imports may lead to messy code</td>
-<td><a href="./xref/org/apache/omid/tso/PersistenceProcessorImpl.html#L18">18</a>&#x2013;<a href="./xref/org/apache/omid/tso/PersistenceProcessorImpl.html#L241">241</a></td></tr>
 <tr class="a">
+<td>Too many static imports may lead to messy code</td>
+<td><a href="./xref/org/apache/omid/tso/PersistenceProcessorImpl.html#L18">18</a>&#x2013;<a href="./xref/org/apache/omid/tso/PersistenceProcessorImpl.html#L251">251</a></td></tr>
+<tr class="b">
 <td>Avoid unused private fields such as 'metrics'.</td>
 <td><a href="./xref/org/apache/omid/tso/PersistenceProcessorImpl.html#L70">70</a></td></tr></table></div>
 <div class="section">
 <h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoRequestProcessorImpl.java"></a>TSO and TO Servers - org/apache/omid/tso/RequestProcessorImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Violation</th>
 <th>Line</th></tr>
+<tr class="b">
+<td>Avoid unused imports such as 'java.util.Set'</td>
+<td><a href="./xref/org/apache/omid/tso/RequestProcessorImpl.html#L42">42</a></td></tr>
 <tr class="a">
 <td>Avoid unused private fields such as 'metrics'.</td>
-<td><a href="./xref/org/apache/omid/tso/RequestProcessorImpl.html#L58">58</a></td></tr></table></div>
+<td><a href="./xref/org/apache/omid/tso/RequestProcessorImpl.html#L64">64</a></td></tr></table></div>
 <div class="section">
 <h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoRetryProcessorImpl.java"></a>TSO and TO Servers - org/apache/omid/tso/RetryProcessorImpl.java</h3>
 <table border="0" class="table table-striped">
@@ -448,19 +580,28 @@
 <th>Line</th></tr>
 <tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L144">144</a></td></tr>
+<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L150">150</a></td></tr>
 <tr class="b">
 <td>Avoid empty while statements</td>
-<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L145">145</a>&#x2013;<a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L147">147</a></td></tr>
+<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L151">151</a>&#x2013;<a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L153">153</a></td></tr>
 <tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L148">148</a></td></tr>
+<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L154">154</a></td></tr>
 <tr class="b">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L151">151</a></td></tr>
+<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L157">157</a></td></tr>
+<tr class="a">
+<td>Useless parentheses.</td>
+<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L158">158</a></td></tr></table></div>
+<div class="section">
+<h3><a name="TSO_and_TO_Servers_-_orgapacheomidtsoWorldClockOracleImpl.java"></a>TSO and TO Servers - org/apache/omid/tso/WorldClockOracleImpl.java</h3>
+<table border="0" class="table table-striped">
+<tr class="b">
+<th>Violation</th>
+<th>Line</th></tr>
 <tr class="a">
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/omid/tso/TimestampOracleImpl.html#L152">152</a></td></tr></table></div></div>
+<td><a href="./xref/org/apache/omid/tso/WorldClockOracleImpl.html#L149">149</a></td></tr></table></div></div>
                   </div>
           </div>
 

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 2705c05..6d1655b 100644
--- a/project-info.html
+++ b/project-info.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 012031f..188bf03 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index a874b39..4285458 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -250,7 +250,7 @@
 <td>omid</td></tr>
 <tr class="b">
 <td>Version</td>
-<td>0.9.0.0</td></tr>
+<td>0.8.2.11-SNAPSHOT</td></tr>
 <tr class="a">
 <td>Type</td>
 <td>pom</td></tr></table></div></div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/quickstart.html
----------------------------------------------------------------------
diff --git a/quickstart.html b/quickstart.html
index f71215d..50a5840 100644
--- a/quickstart.html
+++ b/quickstart.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Quickstart</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>Quickstart</h1>
+            <h1>Quickstart</h1>
 <p>Below are instructions to quickly set up an environment to test Omid in your local machine.</p>
 <div class="section">
 <h2><a name="Requirements"></a>Requirements</h2>
@@ -243,11 +231,11 @@
 <h3><a name="a2._Clone_the_Omid_repository_and_Build_the_TSO_Package:"></a>2. Clone the <a class="externalLink" href="https://github.com/apache/incubator-omid">Omid repository</a> and Build the TSO Package:</h3>
 
 <div class="source">
-<div class="source"><pre class="prettyprint">$ git clone git@github.com:yahoo/omid.git
+<div class="source"><pre class="prettyprint">$ git clone git@github.com:apache/incubator-omid.git
 $ cd omid
-$ mvn clean install -Phbase-0 (for HBase 0.x versions)
-or
 $ mvn clean install -Phbase-1 (for HBase 1.x versions)
+or
+$ mvn clean install -Phbase-2 (for HBase 2.x versions)
 </pre></div></div>
 <p>This will generate a binary package containing all dependencies for the TSO in tso-server/target/tso-server-&lt;VERSION&gt;-bin.tar.gz. </p>
 <p><b>Be aware</b> Unit tests use HBase mini cluster, it typically fails to start if you are on VPN, thus unit test fail. Unit tests coverage is also quite extensive and take a while to run on each build (~15min at the moment of writing). So, consider using <tt>mvn clean install -DskipTests</tt> to speed temporal builds. Note that <tt>-Dmaven.test.skip=true</tt> <a class="externalLink" href="http://ericlefevre.net/wordpress/2008/02/21/skipping-tests-with-maven/">is NOT an equivalent</a>.</p>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 7a736e4..9da58d7 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index f6eb60b..099ee12 100644
--- a/team-list.html
+++ b/team-list.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/allclasses-frame.html b/xref-test/allclasses-frame.html
index 03736aa..608b7da 100644
--- a/xref-test/allclasses-frame.html
+++ b/xref-test/allclasses-frame.html
@@ -69,6 +69,9 @@
 				<a href="org/apache/omid/transaction/TSOForHBaseCompactorTestModule.html" target="classFrame">TSOForHBaseCompactorTestModule</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html" target="classFrame">TSOForSnapshotFilterTestModule</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tso/TSOMockModule.html" target="classFrame">TSOMockModule</a>
 			</li>
 						<li>
@@ -90,13 +93,10 @@
 				<a href="org/apache/omid/tso/TestBatch.html" target="classFrame">TestBatch</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/tso/TestBatchPool.html" target="classFrame">TestBatchPool</a>
-			</li>
-						<li>
 				<a href="org/apache/omid/transaction/TestCellUtils.html" target="classFrame">TestCellUtils</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/TestReflectionHelper.html" target="classFrame">TestClass</a>
+				<a href="org/apache/omid/transaction/TestCheckpoint.html" target="classFrame">TestCheckpoint</a>
 			</li>
 						<li>
 				<a href="org/apache/omid/transaction/TestColumnIterator.html" target="classFrame">TestColumnIterator</a>
@@ -150,6 +150,9 @@
 				<a href="org/apache/omid/tso/TestLongCache.html" target="classFrame">TestLongCache</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/TestMarkPutAsCommitted.html" target="classFrame">TestMarkPutAsCommitted</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tso/client/TestMockTSOClient.html" target="classFrame">TestMockTSOClient</a>
 			</li>
 						<li>
@@ -174,9 +177,6 @@
 				<a href="org/apache/omid/transaction/TestReadPath.html" target="classFrame">TestReadPath</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/TestReflectionHelper.html" target="classFrame">TestReflectionHelper</a>
-			</li>
-						<li>
 				<a href="org/apache/omid/tso/TestReplyProcessor.html" target="classFrame">TestReplyProcessor</a>
 			</li>
 						<li>
@@ -192,6 +192,9 @@
 				<a href="org/apache/omid/transaction/TestSingleColumnFamily.html" target="classFrame">TestSingleColumnFamily</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/TestSnapshotFilter.html" target="classFrame">TestSnapshotFilter</a>
+			</li>
+						<li>
 				<a href="org/apache/statemachine/TestStateMachine.html" target="classFrame">TestStateMachine</a>
 			</li>
 						<li>
@@ -207,6 +210,9 @@
 				<a href="org/apache/omid/tso/client/TestTSOClientResponseHandling.html" target="classFrame">TestTSOClientResponseHandling</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/tso/client/TestTSOClientRowAndCellLevelConflict.html" target="classFrame">TestTSOClientRowAndCellLevelConflict</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/transaction/TestTSOModule.html" target="classFrame">TestTSOModule</a>
 			</li>
 						<li>
@@ -237,6 +243,9 @@
 				<a href="org/apache/omid/TestUtils.html" target="classFrame">TestUtils</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/tso/TestWorldTimeOracle.html" target="classFrame">TestWorldTimeOracle</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/timestamp/storage/TestZKTimestampStorage.html" target="classFrame">TestZKTimestampStorage</a>
 			</li>
 						<li>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/index.html
----------------------------------------------------------------------
diff --git a/xref-test/index.html b/xref-test/index.html
index 3d49b33..2834caf 100644
--- a/xref-test/index.html
+++ b/xref-test/index.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference</title>
 	</head>
     <frameset cols="20%,80%">
 		<frameset rows="30%,70%">


[21/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/client/TestTSOClientRowAndCellLevelConflict.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/client/TestTSOClientRowAndCellLevelConflict.html b/xref-test/org/apache/omid/tso/client/TestTSOClientRowAndCellLevelConflict.html
new file mode 100644
index 0000000..4930e80
--- /dev/null
+++ b/xref-test/org/apache/omid/tso/client/TestTSOClientRowAndCellLevelConflict.html
@@ -0,0 +1,217 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TestTSOClientRowAndCellLevelConflict xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../../target/site/testapidocs/org/apache/omid/tso/client/TestTSOClientRowAndCellLevelConflict.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.tso.client;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Sets;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Module;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConflictDetectionLevel;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.util.DummyCellIdImpl;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/tso/client/TestTSOClientRowAndCellLevelConflict.html">TestTSOClientRowAndCellLevelConflict</a> {
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTSOClientRowAndCellLevelConflict.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
+<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO_SERVER_PORT = 5678;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> OmidClientConfiguration tsoClientConf;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <em class="jxr_comment">// Required infrastructure for TSOClient test</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> TSOServer tsoServer;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>      @BeforeMethod
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeMethod() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>          TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="59" href="#59">59</a>          tsoConfig.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="60" href="#60">60</a>          tsoConfig.setPort(TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="61" href="#61">61</a>          tsoConfig.setNumConcurrentCTWriters(2);
+<a class="jxr_linenumber" name="62" href="#62">62</a>          Module tsoServerMockModule = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig);
+<a class="jxr_linenumber" name="63" href="#63">63</a>          Injector injector = Guice.createInjector(tsoServerMockModule);
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
+<a class="jxr_linenumber" name="66" href="#66">66</a>          LOG.info(<span class="jxr_string">"======================================= Init TSO Server =========================================="</span>);
+<a class="jxr_linenumber" name="67" href="#67">67</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>          tsoServer = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="70" href="#70">70</a>          tsoServer.startAndWait();
+<a class="jxr_linenumber" name="71" href="#71">71</a>          TestUtils.waitForSocketListening(TSO_SERVER_HOST, TSO_SERVER_PORT, 100);
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
+<a class="jxr_linenumber" name="74" href="#74">74</a>          LOG.info(<span class="jxr_string">"===================================== TSO Server Initialized ====================================="</span>);
+<a class="jxr_linenumber" name="75" href="#75">75</a>          LOG.info(<span class="jxr_string">"=================================================================================================="</span>);
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>          OmidClientConfiguration tsoClientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="78" href="#78">78</a>          tsoClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">this</strong>.tsoClientConf = tsoClientConf;
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>      }
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>      @AfterMethod
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterMethod() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="86" href="#86">86</a>          tsoServer.stopAndWait();
+<a class="jxr_linenumber" name="87" href="#87">87</a>          tsoServer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="88" href="#88">88</a>          TestUtils.waitForSocketNotListening(TSO_SERVER_HOST, TSO_SERVER_PORT, 1000);
+<a class="jxr_linenumber" name="89" href="#89">89</a>      }
+<a class="jxr_linenumber" name="90" href="#90">90</a>  
+<a class="jxr_linenumber" name="91" href="#91">91</a>      @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRowLevelConflictAnalysisConflict() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>          tsoClientConf.setConflictAnalysisLevel(ConflictDetectionLevel.ROW);
+<a class="jxr_linenumber" name="95" href="#95">95</a>  
+<a class="jxr_linenumber" name="96" href="#96">96</a>          TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>          CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL, 0xdeadbeeeL);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xfeedcafeL, 0xdeadbeeeL);
+<a class="jxr_linenumber" name="100" href="#100">100</a> 
+<a class="jxr_linenumber" name="101" href="#101">101</a>         Set&lt;CellId&gt; testWriteSet1 = Sets.newHashSet(c1);
+<a class="jxr_linenumber" name="102" href="#102">102</a>         Set&lt;CellId&gt; testWriteSet2 = Sets.newHashSet(c2);
+<a class="jxr_linenumber" name="103" href="#103">103</a>         
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="105" href="#105">105</a>         <strong class="jxr_keyword">long</strong> ts2 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="106" href="#106">106</a>         
+<a class="jxr_linenumber" name="107" href="#107">107</a>         client.commit(ts1, testWriteSet1).get();
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="110" href="#110">110</a>             client.commit(ts2, testWriteSet2).get();
+<a class="jxr_linenumber" name="111" href="#111">111</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="112" href="#112">112</a>             assertTrue(e.getCause() instanceof AbortException, <span class="jxr_string">"Transaction should be aborted"</span>);
+<a class="jxr_linenumber" name="113" href="#113">113</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="114" href="#114">114</a>         }
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a>         assertTrue(false, <span class="jxr_string">"Transaction should be aborted"</span>);
+<a class="jxr_linenumber" name="117" href="#117">117</a>     }
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRowLevelConflictAnalysisCommit() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>         tsoClientConf.setConflictAnalysisLevel(ConflictDetectionLevel.ROW);
+<a class="jxr_linenumber" name="123" href="#123">123</a> 
+<a class="jxr_linenumber" name="124" href="#124">124</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="125" href="#125">125</a> 
+<a class="jxr_linenumber" name="126" href="#126">126</a>         CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL, 0xdeadbeeeL);
+<a class="jxr_linenumber" name="127" href="#127">127</a>         CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xfeedcafeL, 0xdeadbeefL);
+<a class="jxr_linenumber" name="128" href="#128">128</a> 
+<a class="jxr_linenumber" name="129" href="#129">129</a>         Set&lt;CellId&gt; testWriteSet1 = Sets.newHashSet(c1);
+<a class="jxr_linenumber" name="130" href="#130">130</a>         Set&lt;CellId&gt; testWriteSet2 = Sets.newHashSet(c2);
+<a class="jxr_linenumber" name="131" href="#131">131</a>         
+<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">long</strong> ts2 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="134" href="#134">134</a>         
+<a class="jxr_linenumber" name="135" href="#135">135</a>         client.commit(ts1, testWriteSet1).get();
+<a class="jxr_linenumber" name="136" href="#136">136</a> 
+<a class="jxr_linenumber" name="137" href="#137">137</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="138" href="#138">138</a>             client.commit(ts2, testWriteSet2).get();
+<a class="jxr_linenumber" name="139" href="#139">139</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="140" href="#140">140</a>             assertFalse(e.getCause() instanceof AbortException, <span class="jxr_string">"Transaction should be committed"</span>);
+<a class="jxr_linenumber" name="141" href="#141">141</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="142" href="#142">142</a>         }
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>         assertTrue(<strong class="jxr_keyword">true</strong>, <span class="jxr_string">"Transaction should be committed"</span>);
+<a class="jxr_linenumber" name="145" href="#145">145</a>     }
+<a class="jxr_linenumber" name="146" href="#146">146</a> 
+<a class="jxr_linenumber" name="147" href="#147">147</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="148" href="#148">148</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellLevelConflictAnalysisConflict() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="149" href="#149">149</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>         tsoClientConf.setConflictAnalysisLevel(ConflictDetectionLevel.CELL);
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="153" href="#153">153</a> 
+<a class="jxr_linenumber" name="154" href="#154">154</a>         CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL, 0xdeadbeeeL);
+<a class="jxr_linenumber" name="155" href="#155">155</a>         CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL, 0xdeadbeeeL);
+<a class="jxr_linenumber" name="156" href="#156">156</a> 
+<a class="jxr_linenumber" name="157" href="#157">157</a>         Set&lt;CellId&gt; testWriteSet1 = Sets.newHashSet(c1);
+<a class="jxr_linenumber" name="158" href="#158">158</a>         Set&lt;CellId&gt; testWriteSet2 = Sets.newHashSet(c2);
+<a class="jxr_linenumber" name="159" href="#159">159</a>         
+<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">long</strong> ts2 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="162" href="#162">162</a>         
+<a class="jxr_linenumber" name="163" href="#163">163</a>         client.commit(ts1, testWriteSet1).get();
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="166" href="#166">166</a>             client.commit(ts2, testWriteSet2).get();
+<a class="jxr_linenumber" name="167" href="#167">167</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="168" href="#168">168</a>             assertTrue(e.getCause() instanceof AbortException, <span class="jxr_string">"Transaction should be aborted"</span>);
+<a class="jxr_linenumber" name="169" href="#169">169</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="170" href="#170">170</a>         }
+<a class="jxr_linenumber" name="171" href="#171">171</a> 
+<a class="jxr_linenumber" name="172" href="#172">172</a>         assertTrue(false, <span class="jxr_string">"Transaction should be aborted"</span>);
+<a class="jxr_linenumber" name="173" href="#173">173</a>     }
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCellLevelConflictAnalysisCommit() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="177" href="#177">177</a> 
+<a class="jxr_linenumber" name="178" href="#178">178</a>         tsoClientConf.setConflictAnalysisLevel(ConflictDetectionLevel.CELL);
+<a class="jxr_linenumber" name="179" href="#179">179</a> 
+<a class="jxr_linenumber" name="180" href="#180">180</a>         TSOClient client = TSOClient.newInstance(tsoClientConf);
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>         CellId c1 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xdeadbeefL, 0xdeadbeeeL);
+<a class="jxr_linenumber" name="183" href="#183">183</a>         CellId c2 = <strong class="jxr_keyword">new</strong> DummyCellIdImpl(0xfeedcafeL, 0xdeadbeefL);
+<a class="jxr_linenumber" name="184" href="#184">184</a> 
+<a class="jxr_linenumber" name="185" href="#185">185</a>         Set&lt;CellId&gt; testWriteSet1 = Sets.newHashSet(c1);
+<a class="jxr_linenumber" name="186" href="#186">186</a>         Set&lt;CellId&gt; testWriteSet2 = Sets.newHashSet(c2);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         
+<a class="jxr_linenumber" name="188" href="#188">188</a>         <strong class="jxr_keyword">long</strong> ts1 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="189" href="#189">189</a>         <strong class="jxr_keyword">long</strong> ts2 = client.getNewStartTimestamp().get();
+<a class="jxr_linenumber" name="190" href="#190">190</a>         
+<a class="jxr_linenumber" name="191" href="#191">191</a>         client.commit(ts1, testWriteSet1).get();
+<a class="jxr_linenumber" name="192" href="#192">192</a> 
+<a class="jxr_linenumber" name="193" href="#193">193</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="194" href="#194">194</a>             client.commit(ts2, testWriteSet2).get();
+<a class="jxr_linenumber" name="195" href="#195">195</a>         } <strong class="jxr_keyword">catch</strong> (ExecutionException e) {
+<a class="jxr_linenumber" name="196" href="#196">196</a>             assertFalse(e.getCause() instanceof AbortException, <span class="jxr_string">"Transaction should be committed"</span>);
+<a class="jxr_linenumber" name="197" href="#197">197</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="198" href="#198">198</a>         }
+<a class="jxr_linenumber" name="199" href="#199">199</a> 
+<a class="jxr_linenumber" name="200" href="#200">200</a>         assertTrue(<strong class="jxr_keyword">true</strong>, <span class="jxr_string">"Transaction should be committed"</span>);
+<a class="jxr_linenumber" name="201" href="#201">201</a>     }
+<a class="jxr_linenumber" name="202" href="#202">202</a>     
+<a class="jxr_linenumber" name="203" href="#203">203</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/client/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/client/package-frame.html b/xref-test/org/apache/omid/tso/client/package-frame.html
index a360f04..ccb4ca5 100644
--- a/xref-test/org/apache/omid/tso/client/package-frame.html
+++ b/xref-test/org/apache/omid/tso/client/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.tso.client</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.tso.client</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -46,6 +46,9 @@
             	<a href="TestTSOClientResponseHandling.html" target="classFrame">TestTSOClientResponseHandling</a>
           	</li>
           	          	<li>
+            	<a href="TestTSOClientRowAndCellLevelConflict.html" target="classFrame">TestTSOClientRowAndCellLevelConflict</a>
+          	</li>
+          	          	<li>
             	<a href="TestUnconnectedTSOClient.html" target="classFrame">TestUnconnectedTSOClient</a>
           	</li>
           	      	</ul>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/client/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/client/package-summary.html b/xref-test/org/apache/omid/tso/client/package-summary.html
index c187ffc..d1c01a0 100644
--- a/xref-test/org/apache/omid/tso/client/package-summary.html
+++ b/xref-test/org/apache/omid/tso/client/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.tso.client</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.tso.client</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -87,6 +87,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="TestTSOClientRowAndCellLevelConflict.html" target="classFrame">TestTSOClientRowAndCellLevelConflict</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="TestUnconnectedTSOClient.html" target="classFrame">TestUnconnectedTSOClient</a>
               		</td>
             	</tr>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/package-frame.html b/xref-test/org/apache/omid/tso/package-frame.html
index 19a8340..0a19763 100644
--- a/xref-test/org/apache/omid/tso/package-frame.html
+++ b/xref-test/org/apache/omid/tso/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.tso</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.tso</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -52,9 +52,6 @@
             	<a href="TestBatch.html" target="classFrame">TestBatch</a>
           	</li>
           	          	<li>
-            	<a href="TestBatchPool.html" target="classFrame">TestBatchPool</a>
-          	</li>
-          	          	<li>
             	<a href="TestLeaseManager.html" target="classFrame">TestLeaseManager</a>
           	</li>
           	          	<li>
@@ -88,6 +85,9 @@
             	<a href="TestTimestampOracle.html" target="classFrame">TestTimestampOracle</a>
           	</li>
           	          	<li>
+            	<a href="TestWorldTimeOracle.html" target="classFrame">TestWorldTimeOracle</a>
+          	</li>
+          	          	<li>
             	<a href="ProgrammableTSOServer.html" target="classFrame">TimestampResponse</a>
           	</li>
           	      	</ul>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/package-summary.html b/xref-test/org/apache/omid/tso/package-summary.html
index f9f68b9..d0b596d 100644
--- a/xref-test/org/apache/omid/tso/package-summary.html
+++ b/xref-test/org/apache/omid/tso/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.tso</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.tso</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -97,11 +97,6 @@
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="TestBatchPool.html" target="classFrame">TestBatchPool</a>
-              		</td>
-            	</tr>
-				            	<tr>
-              		<td>
                 		<a href="TestLeaseManager.html" target="classFrame">TestLeaseManager</a>
               		</td>
             	</tr>
@@ -157,6 +152,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="TestWorldTimeOracle.html" target="classFrame">TestWorldTimeOracle</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="ProgrammableTSOServer.html" target="classFrame">TimestampResponse</a>
               		</td>
             	</tr>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/statemachine/package-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/statemachine/package-frame.html b/xref-test/org/apache/statemachine/package-frame.html
index d60a0f6..74ada40 100644
--- a/xref-test/org/apache/statemachine/package-frame.html
+++ b/xref-test/org/apache/statemachine/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.statemachine</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.statemachine</title>
 		<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/statemachine/package-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/statemachine/package-summary.html b/xref-test/org/apache/statemachine/package-summary.html
index 19d53d9..0a02c23 100644
--- a/xref-test/org/apache/statemachine/package-summary.html
+++ b/xref-test/org/apache/statemachine/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.statemachine</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.statemachine</title>
 		<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/overview-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/overview-frame.html b/xref-test/overview-frame.html
index e22c158..ea493b9 100644
--- a/xref-test/overview-frame.html
+++ b/xref-test/overview-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference</title>
 		<link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/overview-summary.html
----------------------------------------------------------------------
diff --git a/xref-test/overview-summary.html b/xref-test/overview-summary.html
index 9cf8bb7..1495c61 100644
--- a/xref-test/overview-summary.html
+++ b/xref-test/overview-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference</title>
 		<link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -24,7 +24,7 @@
 	        </ul>
       	</div>
 		
-		      	<h2>Omid 0.9.0.0 Reference</h2>
+		      	<h2>Omid 0.8.2.11-SNAPSHOT Reference</h2>
 
 		<table class="summary">
         	<thead>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/xref/allclasses-frame.html b/xref/allclasses-frame.html
index a5df7de..82b4e27 100644
--- a/xref/allclasses-frame.html
+++ b/xref/allclasses-frame.html
@@ -27,9 +27,15 @@
 				<a href="org/apache/omid/tso/TimestampOracleImpl.html" target="classFrame">AllocateTimestampBatchTask</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/AttributeSetSnapshotFilter.html" target="classFrame">AttributeSetSnapshotFilter</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/committable/hbase/KeyGeneratorImplementations.html" target="classFrame">BadRandomKeyGenerator</a>
 			</li>
 						<li>
+				<a href="org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html" target="classFrame">BaseRegionObserver</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tso/client/TSOClient.html" target="classFrame">BaseState</a>
 			</li>
 						<li>
@@ -57,12 +63,15 @@
 				<a href="org/apache/omid/transaction/CellUtils.html" target="classFrame">CellGetter</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/transaction/CellUtils.html" target="classFrame">CellId</a>
+				<a href="org/apache/omid/tso/client/CellId.html" target="classFrame">CellId</a>
 			</li>
 						<li>
 				<a href="org/apache/omid/transaction/CellInfo.html" target="classFrame">CellInfo</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/CellSkipFilterBase.html" target="classFrame">CellSkipFilterBase</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/transaction/CellUtils.html" target="classFrame">CellUtils</a>
 			</li>
 						<li>
@@ -132,7 +141,7 @@
 				<a href="org/apache/omid/benchmarks/tso/RawTxRunner.html" target="classFrame">Committer</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/transaction/CompactorScanner.html" target="classFrame">CompactorScanner</a>
+				<a href="org/apache/hadoop/hbase/regionserver/CompactorScanner.html" target="classFrame">CompactorScanner</a>
 			</li>
 						<li>
 				<a href="org/apache/omid/transaction/CompactorUtil.html" target="classFrame">CompactorUtil</a>
@@ -144,6 +153,9 @@
 				<a href="org/apache/omid/examples/ConfigurationExample.html" target="classFrame">ConfigurationExample</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/tso/client/OmidClientConfiguration.html" target="classFrame">ConflictDetectionLevel</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tso/client/OmidClientConfiguration.html" target="classFrame">ConnType</a>
 			</li>
 						<li>
@@ -201,6 +213,9 @@
 				<a href="org/apache/omid/tso/FatalExceptionHandler.html" target="classFrame">FatalExceptionHandler</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/tso/client/TSOClient.html" target="classFrame">FenceRequestTimeoutEvent</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tso/client/ForwardingTSOFuture.html" target="classFrame">ForwardingTSOFuture</a>
 			</li>
 						<li>
@@ -285,6 +300,9 @@
 				<a href="org/apache/omid/transaction/HRegionCellGetterAdapter.html" target="classFrame">HRegionCellGetterAdapter</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/HTableAccessWrapper.html" target="classFrame">HTableAccessWrapper</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tso/client/TSOClient.html" target="classFrame">Handler</a>
 			</li>
 						<li>
@@ -393,6 +411,12 @@
 				<a href="org/apache/omid/transaction/OmidCompactor.html" target="classFrame">OmidCompactor</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/OmidFilterBase.html" target="classFrame">OmidFilterBase</a>
+			</li>
+						<li>
+				<a href="org/apache/omid/transaction/OmidSnapshotFilter.html" target="classFrame">OmidSnapshotFilter</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tools/hbase/OmidTableManager.html" target="classFrame">OmidTableManager</a>
 			</li>
 						<li>
@@ -438,15 +462,12 @@
 				<a href="org/apache/omid/tso/client/TSOClient.html" target="classFrame">ReconnectEvent</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/ReflectionHelper.html" target="classFrame">ReflectionHelper</a>
+				<a href="org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html" target="classFrame">RegionAccessWrapper</a>
 			</li>
 						<li>
 				<a href="org/apache/omid/committable/hbase/RegionSplitter.html" target="classFrame">RegionSplitter</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/RegionWrapper.html" target="classFrame">RegionWrapper</a>
-			</li>
-						<li>
 				<a href="org/apache/omid/tso/ReplyProcessorImpl.html" target="classFrame">ReplyBatchEvent</a>
 			</li>
 						<li>
@@ -474,7 +495,7 @@
 				<a href="org/apache/omid/tso/client/TSOClient.html" target="classFrame">ResponseEvent</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/transaction/TTable.html" target="classFrame">ResultIterator</a>
+				<a href="org/apache/omid/transaction/SnapshotFilterImpl.html" target="classFrame">ResultIterator</a>
 			</li>
 						<li>
 				<a href="org/apache/omid/tso/RetryProcessorImpl.html" target="classFrame">RetryEvent</a>
@@ -495,9 +516,6 @@
 				<a href="org/apache/omid/tso/RuntimeExceptionPanicker.html" target="classFrame">RuntimeExceptionPanicker</a>
 			</li>
 						<li>
-				<a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html" target="classFrame">ScannerContext</a>
-			</li>
-						<li>
 				<a href="org/apache/omid/benchmarks/utils/ScrambledZipfianGenerator.html" target="classFrame">ScrambledZipfianGenerator</a>
 			</li>
 						<li>
@@ -510,6 +528,12 @@
 				<a href="org/apache/omid/tso/client/ServiceUnavailableException.html" target="classFrame">ServiceUnavailableException</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/SnapshotFilter.html" target="classFrame">SnapshotFilter</a>
+			</li>
+						<li>
+				<a href="org/apache/omid/transaction/SnapshotFilterImpl.html" target="classFrame">SnapshotFilterImpl</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/examples/SnapshotIsolationExample.html" target="classFrame">SnapshotIsolationExample</a>
 			</li>
 						<li>
@@ -537,6 +561,9 @@
 				<a href="org/apache/omid/tso/SystemExitPanicker.html" target="classFrame">SystemExitPanicker</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/tso/TSOServerConfig.html" target="classFrame">TIMESTAMP_TYPE</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tso/TSOChannelHandler.html" target="classFrame">TSOChannelContext</a>
 			</li>
 						<li>
@@ -585,6 +612,9 @@
 				<a href="org/apache/omid/transaction/TTableCellGetterAdapter.html" target="classFrame">TTableCellGetterAdapter</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/TableAccessWrapper.html" target="classFrame">TableAccessWrapper</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/metrics/Timer.html" target="classFrame">Timer</a>
 			</li>
 						<li>
@@ -615,13 +645,19 @@
 				<a href="org/apache/omid/transaction/AbstractTransactionManager.html" target="classFrame">TransactionFactory</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/TransactionFilters.html" target="classFrame">TransactionFilters</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/transaction/TransactionManager.html" target="classFrame">TransactionManager</a>
 			</li>
 						<li>
 				<a href="org/apache/omid/transaction/TransactionManagerException.html" target="classFrame">TransactionManagerException</a>
 			</li>
 						<li>
-				<a href="org/apache/omid/transaction/TTable.html" target="classFrame">TransactionalClientScanner</a>
+				<a href="org/apache/omid/transaction/TransactionVisibilityFilterBase.html" target="classFrame">TransactionVisibilityFilterBase</a>
+			</li>
+						<li>
+				<a href="org/apache/omid/transaction/SnapshotFilterImpl.html" target="classFrame">TransactionalClientScanner</a>
 			</li>
 						<li>
 				<a href="org/apache/omid/tso/TsoServerDaemon.html" target="classFrame">TsoServerDaemon</a>
@@ -642,6 +678,9 @@
 				<a href="org/apache/omid/tso/client/TSOClient.html" target="classFrame">UserEvent</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/transaction/AbstractTransaction.html" target="classFrame">VisibilityLevel</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/tso/VoidLeaseManagementModule.html" target="classFrame">VoidLeaseManagementModule</a>
 			</li>
 						<li>
@@ -651,6 +690,9 @@
 				<a href="org/apache/omid/tso/TSOServerConfig.html" target="classFrame">WAIT_STRATEGY</a>
 			</li>
 						<li>
+				<a href="org/apache/omid/tso/WorldClockOracleImpl.html" target="classFrame">WorldClockOracleImpl</a>
+			</li>
+						<li>
 				<a href="org/apache/omid/committable/InMemoryCommitTable.html" target="classFrame">Writer</a>
 			</li>
 						<li>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/index.html
----------------------------------------------------------------------
diff --git a/xref/index.html b/xref/index.html
index 3d49b33..2834caf 100644
--- a/xref/index.html
+++ b/xref/index.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference</title>
 	</head>
     <frameset cols="20%,80%">
 		<frameset rows="30%,70%">

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html b/xref/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html
new file mode 100644
index 0000000..988c8e6
--- /dev/null
+++ b/xref/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html
@@ -0,0 +1,61 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>BaseRegionObserver xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../../target/site/apidocs/org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.hadoop.hbase.coprocessor;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.InternalScanner;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.ScanType;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.Store;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.html">BaseRegionObserver</a> <strong class="jxr_keyword">implements</strong> RegionObserver, RegionCoprocessor {
+<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">public</strong> InternalScanner preCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; c,
+<a class="jxr_linenumber" name="31" href="#31">31</a>                                        Store store,
+<a class="jxr_linenumber" name="32" href="#32">32</a>                                        InternalScanner scanner,
+<a class="jxr_linenumber" name="33" href="#33">33</a>                                        ScanType scanType,
+<a class="jxr_linenumber" name="34" href="#34">34</a>                                        CompactionLifeCycleTracker tracker,
+<a class="jxr_linenumber" name="35" href="#35">35</a>                                        CompactionRequest request) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="36" href="#36">36</a>          <strong class="jxr_keyword">return</strong> preCompact(c,store,scanner,scanType,request);
+<a class="jxr_linenumber" name="37" href="#37">37</a>      }
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">public</strong> InternalScanner preCompact(ObserverContext&lt;RegionCoprocessorEnvironment&gt; env,
+<a class="jxr_linenumber" name="40" href="#40">40</a>                                        Store store,
+<a class="jxr_linenumber" name="41" href="#41">41</a>                                        InternalScanner scanner,
+<a class="jxr_linenumber" name="42" href="#42">42</a>                                        ScanType scanType,
+<a class="jxr_linenumber" name="43" href="#43">43</a>                                        CompactionRequest request) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">return</strong> scanner;
+<a class="jxr_linenumber" name="45" href="#45">45</a>      }
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>  }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/hadoop/hbase/coprocessor/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/coprocessor/package-frame.html b/xref/org/apache/hadoop/hbase/coprocessor/package-frame.html
new file mode 100644
index 0000000..5359124
--- /dev/null
+++ b/xref/org/apache/hadoop/hbase/coprocessor/package-frame.html
@@ -0,0 +1,24 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
+<html xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.hadoop.hbase.coprocessor</title>
+		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
+	</head>
+	<body>
+
+		<h3>
+        	<a href="package-summary.html" target="classFrame">org.apache.hadoop.hbase.coprocessor</a>
+      	</h3>
+
+      	<h3>Classes</h3>
+
+      	<ul>
+      		          	<li>
+            	<a href="BaseRegionObserver.html" target="classFrame">BaseRegionObserver</a>
+          	</li>
+          	      	</ul>
+
+	</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/hadoop/hbase/coprocessor/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/coprocessor/package-summary.html b/xref/org/apache/hadoop/hbase/coprocessor/package-summary.html
new file mode 100644
index 0000000..6ff1a5a
--- /dev/null
+++ b/xref/org/apache/hadoop/hbase/coprocessor/package-summary.html
@@ -0,0 +1,67 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
+<html xml:lang="en" lang="en">
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.hadoop.hbase.coprocessor</title>
+		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
+	</head>
+	<body>
+		      	<div class="overview">
+        	<ul>
+          		<li>
+            		<a href="../../../../../overview-summary.html">Overview</a>
+          		</li>
+          		<li class="selected">Package</li>
+        	</ul>
+      	</div>
+      	<div class="framenoframe">
+        	<ul>
+          		<li>
+            		<a href="../../../../../index.html" target="_top">FRAMES</a>
+          		</li>
+          		<li>
+            		<a href="package-summary.html" target="_top">NO FRAMES</a>
+          		</li>
+        	</ul>
+      	</div>
+		
+		      	<h2>Package org.apache.hadoop.hbase.coprocessor</h2>
+
+		<table class="summary">
+        	<thead>
+          		<tr>
+            		<th>Class Summary</th>
+          		</tr>
+        	</thead>
+        	<tbody>
+        		            	<tr>
+              		<td>
+                		<a href="BaseRegionObserver.html" target="classFrame">BaseRegionObserver</a>
+              		</td>
+            	</tr>
+				        	</tbody>
+      	</table>
+		
+		      	<div class="overview">
+        	<ul>
+          		<li>
+            		<a href="../../../../../overview-summary.html">Overview</a>
+          		</li>
+          		<li class="selected">Package</li>
+        	</ul>
+      	</div>
+      	<div class="framenoframe">
+        	<ul>
+          		<li>
+            		<a href="../../../../../index.html" target="_top">FRAMES</a>
+          		</li>
+          		<li>
+            		<a href="package-summary.html" target="_top">NO FRAMES</a>
+          		</li>
+        	</ul>
+      	</div>
+				<hr />
+		Copyright &#169; 2011-2018 Apache Software Foundation. All Rights Reserved.
+	</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html b/xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html
index c475048..eb26d47 100644
--- a/xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html
+++ b/xref/org/apache/hadoop/hbase/regionserver/CompactorScanner.html
@@ -69,14 +69,14 @@
 <a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> retainNonTransactionallyDeletedCells;
 <a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> lowWatermark;
 <a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html">Region</a> hRegion;
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Region hRegion;
 <a class="jxr_linenumber" name="63" href="#63">63</a>  
 <a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> hasMoreRows = false;
 <a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> List&lt;Cell&gt; currentRowWorthValues = <strong class="jxr_keyword">new</strong> ArrayList&lt;Cell&gt;();
 <a class="jxr_linenumber" name="66" href="#66">66</a>  
 <a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactorScanner.html">CompactorScanner</a>(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,
 <a class="jxr_linenumber" name="68" href="#68">68</a>                              InternalScanner internalScanner,
-<a class="jxr_linenumber" name="69" href="#69">69</a>                              <a href="../../../../../org/apache/omid/committable/NullCommitTable.html">Client</a> commitTableClient,
+<a class="jxr_linenumber" name="69" href="#69">69</a>                              <a href="../../../../../org/apache/omid/committable/InMemoryCommitTable.html">Client</a> commitTableClient,
 <a class="jxr_linenumber" name="70" href="#70">70</a>                              Queue&lt;CommitTable.Client&gt; commitTableClientQueue,
 <a class="jxr_linenumber" name="71" href="#71">71</a>                              <strong class="jxr_keyword">boolean</strong> isMajorCompaction,
 <a class="jxr_linenumber" name="72" href="#72">72</a>                              <strong class="jxr_keyword">boolean</strong> preserveNonTransactionallyDeletedCells) <strong class="jxr_keyword">throws</strong> IOException {
@@ -97,7 +97,7 @@
 <a class="jxr_linenumber" name="87" href="#87">87</a>          <strong class="jxr_keyword">return</strong> next(results, -1);
 <a class="jxr_linenumber" name="88" href="#88">88</a>      }
 <a class="jxr_linenumber" name="89" href="#89">89</a>  
-<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> next(List&lt;Cell&gt; result, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html">ScannerContext</a> scannerContext) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> next(List&lt;Cell&gt; result, ScannerContext scannerContext) <strong class="jxr_keyword">throws</strong> IOException {
 <a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">int</strong> limit = scannerContext.getBatchLimit();
 <a class="jxr_linenumber" name="92" href="#92">92</a>          <strong class="jxr_keyword">return</strong> next(result, limit);
 <a class="jxr_linenumber" name="93" href="#93">93</a>      }
@@ -245,7 +245,7 @@
 <a class="jxr_linenumber" name="235" href="#235">235</a>             } <strong class="jxr_keyword">else</strong> {
 <a class="jxr_linenumber" name="236" href="#236">236</a>                 Get g = <strong class="jxr_keyword">new</strong> Get(CellUtil.cloneRow(cell));
 <a class="jxr_linenumber" name="237" href="#237">237</a>                 byte[] family = CellUtil.cloneFamily(cell);
-<a class="jxr_linenumber" name="238" href="#238">238</a>                 byte[] qualifier = CellUtils.addShadowCellSuffix(cell.getQualifierArray(),
+<a class="jxr_linenumber" name="238" href="#238">238</a>                 byte[] qualifier = CellUtils.addShadowCellSuffixPrefix(cell.getQualifierArray(),
 <a class="jxr_linenumber" name="239" href="#239">239</a>                         cell.getQualifierOffset(),
 <a class="jxr_linenumber" name="240" href="#240">240</a>                         cell.getQualifierLength());
 <a class="jxr_linenumber" name="241" href="#241">241</a>                 g.addColumn(family, qualifier);

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/hadoop/hbase/regionserver/Region.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/regionserver/Region.html b/xref/org/apache/hadoop/hbase/regionserver/Region.html
index a66da4e..469559c 100644
--- a/xref/org/apache/hadoop/hbase/regionserver/Region.html
+++ b/xref/org/apache/hadoop/hbase/regionserver/Region.html
@@ -29,32 +29,39 @@
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HRegionInfo;
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html">Region</a> {
-<a class="jxr_linenumber" name="27" href="#27">27</a>  
-<a class="jxr_linenumber" name="28" href="#28">28</a>      HRegion hRegion;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html">Region</a>(HRegion hRegion) {
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>          <strong class="jxr_keyword">this</strong>.hRegion = hRegion;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>      }
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>      Result get(Get getOperation) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>          <strong class="jxr_keyword">return</strong> hRegion.get(getOperation);
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>      }
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>      HRegionInfo getRegionInfo() {
-<a class="jxr_linenumber" name="43" href="#43">43</a>  
-<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">return</strong> hRegion.getRegionInfo();
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>      }
-<a class="jxr_linenumber" name="47" href="#47">47</a>  }
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html">Region</a> {
+<a class="jxr_linenumber" name="28" href="#28">28</a>  
+<a class="jxr_linenumber" name="29" href="#29">29</a>      HRegion hRegion;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html">Region</a>(HRegion hRegion) {
+<a class="jxr_linenumber" name="32" href="#32">32</a>  
+<a class="jxr_linenumber" name="33" href="#33">33</a>          <strong class="jxr_keyword">this</strong>.hRegion = hRegion;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>      }
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>      Result get(Get getOperation) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="38" href="#38">38</a>  
+<a class="jxr_linenumber" name="39" href="#39">39</a>          <strong class="jxr_keyword">return</strong> hRegion.get(getOperation);
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>      }
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">void</strong> put(Put putOperation) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>          hRegion.put(putOperation);
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      }
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>      HRegionInfo getRegionInfo() {
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>          <strong class="jxr_keyword">return</strong> hRegion.getRegionInfo();
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>      }
+<a class="jxr_linenumber" name="54" href="#54">54</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html b/xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html
new file mode 100644
index 0000000..236be84
--- /dev/null
+++ b/xref/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html
@@ -0,0 +1,80 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>RegionAccessWrapper xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../../target/site/apidocs/org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.hadoop.hbase.regionserver;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.TableAccessWrapper;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_comment">// This class wraps the Region object when doing server side filtering.</em>
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html">RegionAccessWrapper</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/omid/transaction/TableAccessWrapper.html">TableAccessWrapper</a> {
+<a class="jxr_linenumber" name="33" href="#33">33</a>  
+<a class="jxr_linenumber" name="34" href="#34">34</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Region region;
+<a class="jxr_linenumber" name="35" href="#35">35</a>      
+<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.html">RegionAccessWrapper</a>(Region region) {
+<a class="jxr_linenumber" name="37" href="#37">37</a>          <strong class="jxr_keyword">this</strong>.region = region;
+<a class="jxr_linenumber" name="38" href="#38">38</a>      }
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>      @Override
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">public</strong> Result[] get(List&lt;Get&gt; get) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="42" href="#42">42</a>          Result[] results = <strong class="jxr_keyword">new</strong> Result[get.size()];
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">int</strong> i = 0;
+<a class="jxr_linenumber" name="45" href="#45">45</a>          <strong class="jxr_keyword">for</strong> (Get g : get) {
+<a class="jxr_linenumber" name="46" href="#46">46</a>              results[i++] = region.get(g);
+<a class="jxr_linenumber" name="47" href="#47">47</a>          }
+<a class="jxr_linenumber" name="48" href="#48">48</a>          <strong class="jxr_keyword">return</strong> results;
+<a class="jxr_linenumber" name="49" href="#49">49</a>      }
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>      @Override
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> Result get(Get get) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">return</strong> region.get(get);
+<a class="jxr_linenumber" name="54" href="#54">54</a>      }
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>      @Override
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> put(Put put) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="58" href="#58">58</a>          region.put(put);
+<a class="jxr_linenumber" name="59" href="#59">59</a>      }
+<a class="jxr_linenumber" name="60" href="#60">60</a>  
+<a class="jxr_linenumber" name="61" href="#61">61</a>      @Override
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">public</strong> ResultScanner getScanner(Scan scan) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="64" href="#64">64</a>      }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>  }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/hadoop/hbase/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/regionserver/package-frame.html b/xref/org/apache/hadoop/hbase/regionserver/package-frame.html
index fcdcb88..a403909 100644
--- a/xref/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/xref/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.hadoop.hbase.regionserver</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.hadoop.hbase.regionserver</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -16,7 +16,10 @@
 
       	<ul>
       		          	<li>
-            	<a href="ScannerContext.html" target="classFrame">ScannerContext</a>
+            	<a href="CompactorScanner.html" target="classFrame">CompactorScanner</a>
+          	</li>
+          	          	<li>
+            	<a href="RegionAccessWrapper.html" target="classFrame">RegionAccessWrapper</a>
           	</li>
           	      	</ul>
 

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/hadoop/hbase/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/regionserver/package-summary.html b/xref/org/apache/hadoop/hbase/regionserver/package-summary.html
index 4c6e530..c7f7823 100644
--- a/xref/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/xref/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.hadoop.hbase.regionserver</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.hadoop.hbase.regionserver</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -37,7 +37,12 @@
         	<tbody>
         		            	<tr>
               		<td>
-                		<a href="ScannerContext.html" target="classFrame">ScannerContext</a>
+                		<a href="CompactorScanner.html" target="classFrame">CompactorScanner</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
+                		<a href="RegionAccessWrapper.html" target="classFrame">RegionAccessWrapper</a>
               		</td>
             	</tr>
 				        	</tbody>


[31/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestTTableBehaviour.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestTTableBehaviour.html b/xref-test/org/apache/omid/transaction/TestTTableBehaviour.html
index dd07395..41bad84 100644
--- a/xref-test/org/apache/omid/transaction/TestTTableBehaviour.html
+++ b/xref-test/org/apache/omid/transaction/TestTTableBehaviour.html
@@ -27,142 +27,143 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTableInterface;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
 <a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
 <a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.mockito.Mockito;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  @Test(groups = <span class="jxr_string">"noHBase"</span>)
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestTTableBehaviour.html">TestTTableBehaviour</a> {
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">private</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"1row"</span>);
-<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">private</strong> byte[] famName = Bytes.toBytes(<span class="jxr_string">"tf"</span>);
-<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">private</strong> byte[] colName = Bytes.toBytes(<span class="jxr_string">"tc"</span>);
-<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> byte[] dataValue = Bytes.toBytes(<span class="jxr_string">"test-data"</span>);
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUserOperationsDontAllowTimestampSpecification() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>          <em class="jxr_comment">// Component under test</em>
-<a class="jxr_linenumber" name="44" href="#44">44</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(Mockito.mock(HTableInterface.<strong class="jxr_keyword">class</strong>), Mockito.mock(HTableInterface.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>          <strong class="jxr_keyword">long</strong> randomTimestampValue = Bytes.toLong(<span class="jxr_string">"deadbeef"</span>.getBytes());
-<a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>          Transaction tx = Mockito.mock(Transaction.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>          <em class="jxr_comment">// Test put fails when a timestamp is specified in the put</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row, randomTimestampValue);
-<a class="jxr_linenumber" name="52" href="#52">52</a>          put.add(famName, colName, dataValue);
-<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="54" href="#54">54</a>              tt.put(tx, put);
-<a class="jxr_linenumber" name="55" href="#55">55</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
-<a class="jxr_linenumber" name="56" href="#56">56</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="57" href="#57">57</a>              <em class="jxr_comment">// Continue</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>          }
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>          <em class="jxr_comment">// Test put fails when a timestamp is specified in a qualifier</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>          put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="62" href="#62">62</a>          put.add(famName, colName, randomTimestampValue, dataValue);
-<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="64" href="#64">64</a>              tt.put(tx, put);
-<a class="jxr_linenumber" name="65" href="#65">65</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
-<a class="jxr_linenumber" name="66" href="#66">66</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="67" href="#67">67</a>              <em class="jxr_comment">// Continue</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>          }
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>          <em class="jxr_comment">// Test that get fails when a timestamp is specified</em>
-<a class="jxr_linenumber" name="71" href="#71">71</a>          Get get = <strong class="jxr_keyword">new</strong> Get(row);
-<a class="jxr_linenumber" name="72" href="#72">72</a>          get.setTimeStamp(randomTimestampValue);
-<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="74" href="#74">74</a>              tt.get(tx, get);
-<a class="jxr_linenumber" name="75" href="#75">75</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
-<a class="jxr_linenumber" name="76" href="#76">76</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="77" href="#77">77</a>              <em class="jxr_comment">// Continue</em>
-<a class="jxr_linenumber" name="78" href="#78">78</a>          }
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <em class="jxr_comment">// Test scan fails when a timerange is specified</em>
-<a class="jxr_linenumber" name="81" href="#81">81</a>          Scan scan = <strong class="jxr_keyword">new</strong> Scan(get);
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="83" href="#83">83</a>              tt.getScanner(tx, scan);
-<a class="jxr_linenumber" name="84" href="#84">84</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
-<a class="jxr_linenumber" name="85" href="#85">85</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="86" href="#86">86</a>              <em class="jxr_comment">// Continue</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>          }
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>          <em class="jxr_comment">// Test delete fails when a timestamp is specified</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>          Delete delete = <strong class="jxr_keyword">new</strong> Delete(row);
-<a class="jxr_linenumber" name="91" href="#91">91</a>          delete.setTimestamp(randomTimestampValue);
-<a class="jxr_linenumber" name="92" href="#92">92</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="93" href="#93">93</a>              tt.delete(tx, delete);
-<a class="jxr_linenumber" name="94" href="#94">94</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
-<a class="jxr_linenumber" name="95" href="#95">95</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="96" href="#96">96</a>              <em class="jxr_comment">// Continue</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>          }
-<a class="jxr_linenumber" name="98" href="#98">98</a>  
-<a class="jxr_linenumber" name="99" href="#99">99</a>          <em class="jxr_comment">// Test delete fails when a timestamp is specified in a qualifier</em>
-<a class="jxr_linenumber" name="100" href="#100">100</a>         delete = <strong class="jxr_keyword">new</strong> Delete(row);
-<a class="jxr_linenumber" name="101" href="#101">101</a>         delete.deleteColumn(famName, colName, randomTimestampValue);
-<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="103" href="#103">103</a>             tt.delete(tx, delete);
-<a class="jxr_linenumber" name="104" href="#104">104</a>             fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
-<a class="jxr_linenumber" name="105" href="#105">105</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="106" href="#106">106</a>             <em class="jxr_comment">// Continue</em>
-<a class="jxr_linenumber" name="107" href="#107">107</a>         }
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>     }
-<a class="jxr_linenumber" name="110" href="#110">110</a> 
-<a class="jxr_linenumber" name="111" href="#111">111</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="112" href="#112">112</a> <em class="jxr_javadoccomment">     * Test that we cannot use reserved names for shadow cell identifiers as qualifiers in user operations</em>
-<a class="jxr_linenumber" name="113" href="#113">113</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="114" href="#114">114</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReservedNamesForShadowCellsCanNotBeUsedAsQualifiersInUserOperations() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="116" href="#116">116</a>         byte[] nonValidQualifier1 = <span class="jxr_string">"blahblah\u0080"</span>.getBytes(Charsets.UTF_8);
-<a class="jxr_linenumber" name="117" href="#117">117</a>         byte[] validQualifierIncludingOldShadowCellSuffix = <span class="jxr_string">"blahblah:OMID_CTS"</span>.getBytes(Charsets.UTF_8);
-<a class="jxr_linenumber" name="118" href="#118">118</a> 
-<a class="jxr_linenumber" name="119" href="#119">119</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(Mockito.mock(HTableInterface.<strong class="jxr_keyword">class</strong>), Mockito.mock(HTableInterface.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="120" href="#120">120</a> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>         HBaseTransaction t1 = Mockito.mock(HBaseTransaction.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="122" href="#122">122</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="123" href="#123">123</a>         put.add(famName, nonValidQualifier1, dataValue);
-<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="125" href="#125">125</a>             table.put(t1, put);
-<a class="jxr_linenumber" name="126" href="#126">126</a>             fail(<span class="jxr_string">"Shouldn't be able to put this"</span>);
-<a class="jxr_linenumber" name="127" href="#127">127</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException iae) {
-<a class="jxr_linenumber" name="128" href="#128">128</a>             <em class="jxr_comment">// correct</em>
-<a class="jxr_linenumber" name="129" href="#129">129</a>         }
-<a class="jxr_linenumber" name="130" href="#130">130</a>         Delete del = <strong class="jxr_keyword">new</strong> Delete(row);
-<a class="jxr_linenumber" name="131" href="#131">131</a>         del.deleteColumn(famName, nonValidQualifier1);
-<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="133" href="#133">133</a>             table.delete(t1, del);
-<a class="jxr_linenumber" name="134" href="#134">134</a>             fail(<span class="jxr_string">"Shouldn't be able to delete this"</span>);
-<a class="jxr_linenumber" name="135" href="#135">135</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException iae) {
-<a class="jxr_linenumber" name="136" href="#136">136</a>             <em class="jxr_comment">// correct</em>
-<a class="jxr_linenumber" name="137" href="#137">137</a>         }
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>         put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="140" href="#140">140</a>         put.add(famName, validQualifierIncludingOldShadowCellSuffix, dataValue);
-<a class="jxr_linenumber" name="141" href="#141">141</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="142" href="#142">142</a>             table.put(t1, put);
-<a class="jxr_linenumber" name="143" href="#143">143</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException iae) {
-<a class="jxr_linenumber" name="144" href="#144">144</a>             fail(<span class="jxr_string">"Qualifier shouldn't be rejected anymore"</span>);
-<a class="jxr_linenumber" name="145" href="#145">145</a>         }
-<a class="jxr_linenumber" name="146" href="#146">146</a>         del = <strong class="jxr_keyword">new</strong> Delete(row);
-<a class="jxr_linenumber" name="147" href="#147">147</a>         del.deleteColumn(famName, validQualifierIncludingOldShadowCellSuffix);
-<a class="jxr_linenumber" name="148" href="#148">148</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="149" href="#149">149</a>             table.delete(t1, del);
-<a class="jxr_linenumber" name="150" href="#150">150</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException iae) {
-<a class="jxr_linenumber" name="151" href="#151">151</a>             fail(<span class="jxr_string">"Qualifier shouldn't be rejected anymore"</span>);
-<a class="jxr_linenumber" name="152" href="#152">152</a>         }
-<a class="jxr_linenumber" name="153" href="#153">153</a>     }
-<a class="jxr_linenumber" name="154" href="#154">154</a> 
-<a class="jxr_linenumber" name="155" href="#155">155</a> }
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.mockito.Mockito;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  
+<a class="jxr_linenumber" name="33" href="#33">33</a>  @Test(groups = <span class="jxr_string">"noHBase"</span>)
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestTTableBehaviour.html">TestTTableBehaviour</a> {
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">private</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"1row"</span>);
+<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">private</strong> byte[] famName = Bytes.toBytes(<span class="jxr_string">"tf"</span>);
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> byte[] colName = Bytes.toBytes(<span class="jxr_string">"tc"</span>);
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> byte[] dataValue = Bytes.toBytes(<span class="jxr_string">"test-data"</span>);
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUserOperationsDontAllowTimestampSpecification() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>          <em class="jxr_comment">// Component under test</em>
+<a class="jxr_linenumber" name="45" href="#45">45</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(Mockito.mock(Table.<strong class="jxr_keyword">class</strong>), false);
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>          <strong class="jxr_keyword">long</strong> randomTimestampValue = Bytes.toLong(<span class="jxr_string">"deadbeef"</span>.getBytes());
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>          Transaction tx = Mockito.mock(Transaction.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>          <em class="jxr_comment">// Test put fails when a timestamp is specified in the put</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row, randomTimestampValue);
+<a class="jxr_linenumber" name="53" href="#53">53</a>          put.addColumn(famName, colName, dataValue);
+<a class="jxr_linenumber" name="54" href="#54">54</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="55" href="#55">55</a>              tt.put(tx, put);
+<a class="jxr_linenumber" name="56" href="#56">56</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
+<a class="jxr_linenumber" name="57" href="#57">57</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="58" href="#58">58</a>              <em class="jxr_comment">// Continue</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>          }
+<a class="jxr_linenumber" name="60" href="#60">60</a>  
+<a class="jxr_linenumber" name="61" href="#61">61</a>          <em class="jxr_comment">// Test put fails when a timestamp is specified in a qualifier</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>          put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="63" href="#63">63</a>          put.addColumn(famName, colName, randomTimestampValue, dataValue);
+<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="65" href="#65">65</a>              tt.put(tx, put);
+<a class="jxr_linenumber" name="66" href="#66">66</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
+<a class="jxr_linenumber" name="67" href="#67">67</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="68" href="#68">68</a>              <em class="jxr_comment">// Continue</em>
+<a class="jxr_linenumber" name="69" href="#69">69</a>          }
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <em class="jxr_comment">// Test that get fails when a timestamp is specified</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>          Get get = <strong class="jxr_keyword">new</strong> Get(row);
+<a class="jxr_linenumber" name="73" href="#73">73</a>          get.setTimeStamp(randomTimestampValue);
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="75" href="#75">75</a>              tt.get(tx, get);
+<a class="jxr_linenumber" name="76" href="#76">76</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="78" href="#78">78</a>              <em class="jxr_comment">// Continue</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>          }
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>          <em class="jxr_comment">// Test scan fails when a timerange is specified</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>          Scan scan = <strong class="jxr_keyword">new</strong> Scan(get);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="84" href="#84">84</a>              tt.getScanner(tx, scan);
+<a class="jxr_linenumber" name="85" href="#85">85</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
+<a class="jxr_linenumber" name="86" href="#86">86</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="87" href="#87">87</a>              <em class="jxr_comment">// Continue</em>
+<a class="jxr_linenumber" name="88" href="#88">88</a>          }
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>          <em class="jxr_comment">// Test delete fails when a timestamp is specified</em>
+<a class="jxr_linenumber" name="91" href="#91">91</a>          Delete delete = <strong class="jxr_keyword">new</strong> Delete(row);
+<a class="jxr_linenumber" name="92" href="#92">92</a>          delete.setTimestamp(randomTimestampValue);
+<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="94" href="#94">94</a>              tt.delete(tx, delete);
+<a class="jxr_linenumber" name="95" href="#95">95</a>              fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="97" href="#97">97</a>              <em class="jxr_comment">// Continue</em>
+<a class="jxr_linenumber" name="98" href="#98">98</a>          }
+<a class="jxr_linenumber" name="99" href="#99">99</a>  
+<a class="jxr_linenumber" name="100" href="#100">100</a>         <em class="jxr_comment">// Test delete fails when a timestamp is specified in a qualifier</em>
+<a class="jxr_linenumber" name="101" href="#101">101</a>         delete = <strong class="jxr_keyword">new</strong> Delete(row);
+<a class="jxr_linenumber" name="102" href="#102">102</a>         delete.addColumn(famName, colName, randomTimestampValue);
+<a class="jxr_linenumber" name="103" href="#103">103</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="104" href="#104">104</a>             tt.delete(tx, delete);
+<a class="jxr_linenumber" name="105" href="#105">105</a>             fail(<span class="jxr_string">"Should have thrown an IllegalArgumentException due to timestamp specification"</span>);
+<a class="jxr_linenumber" name="106" href="#106">106</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="107" href="#107">107</a>             <em class="jxr_comment">// Continue</em>
+<a class="jxr_linenumber" name="108" href="#108">108</a>         }
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>     }
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="113" href="#113">113</a> <em class="jxr_javadoccomment">     * Test that we cannot use reserved names for shadow cell identifiers as qualifiers in user operations</em>
+<a class="jxr_linenumber" name="114" href="#114">114</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="115" href="#115">115</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReservedNamesForShadowCellsCanNotBeUsedAsQualifiersInUserOperations() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="117" href="#117">117</a>         byte[] nonValidQualifier1 = <span class="jxr_string">"blahblah\u0080"</span>.getBytes(Charsets.UTF_8);
+<a class="jxr_linenumber" name="118" href="#118">118</a>         byte[] validQualifierIncludingOldShadowCellSuffix = <span class="jxr_string">"blahblah:OMID_CTS"</span>.getBytes(Charsets.UTF_8);
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(Mockito.mock(Table.<strong class="jxr_keyword">class</strong>), false);
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>         HBaseTransaction t1 = Mockito.mock(HBaseTransaction.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="123" href="#123">123</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="124" href="#124">124</a>         put.addColumn(famName, nonValidQualifier1, dataValue);
+<a class="jxr_linenumber" name="125" href="#125">125</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="126" href="#126">126</a>             table.put(t1, put);
+<a class="jxr_linenumber" name="127" href="#127">127</a>             fail(<span class="jxr_string">"Shouldn't be able to put this"</span>);
+<a class="jxr_linenumber" name="128" href="#128">128</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException iae) {
+<a class="jxr_linenumber" name="129" href="#129">129</a>             <em class="jxr_comment">// correct</em>
+<a class="jxr_linenumber" name="130" href="#130">130</a>         }
+<a class="jxr_linenumber" name="131" href="#131">131</a>         Delete del = <strong class="jxr_keyword">new</strong> Delete(row);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         del.addColumn(famName, nonValidQualifier1);
+<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="134" href="#134">134</a>             table.delete(t1, del);
+<a class="jxr_linenumber" name="135" href="#135">135</a>             fail(<span class="jxr_string">"Shouldn't be able to delete this"</span>);
+<a class="jxr_linenumber" name="136" href="#136">136</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException iae) {
+<a class="jxr_linenumber" name="137" href="#137">137</a>             <em class="jxr_comment">// correct</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a>         }
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>         put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="141" href="#141">141</a>         put.addColumn(famName, validQualifierIncludingOldShadowCellSuffix, dataValue);
+<a class="jxr_linenumber" name="142" href="#142">142</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="143" href="#143">143</a>             table.put(t1, put);
+<a class="jxr_linenumber" name="144" href="#144">144</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException iae) {
+<a class="jxr_linenumber" name="145" href="#145">145</a>             fail(<span class="jxr_string">"Qualifier shouldn't be rejected anymore"</span>);
+<a class="jxr_linenumber" name="146" href="#146">146</a>         }
+<a class="jxr_linenumber" name="147" href="#147">147</a>         del = <strong class="jxr_keyword">new</strong> Delete(row);
+<a class="jxr_linenumber" name="148" href="#148">148</a>         del.addColumn(famName, validQualifierIncludingOldShadowCellSuffix);
+<a class="jxr_linenumber" name="149" href="#149">149</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="150" href="#150">150</a>             table.delete(t1, del);
+<a class="jxr_linenumber" name="151" href="#151">151</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException iae) {
+<a class="jxr_linenumber" name="152" href="#152">152</a>             fail(<span class="jxr_string">"Qualifier shouldn't be rejected anymore"</span>);
+<a class="jxr_linenumber" name="153" href="#153">153</a>         }
+<a class="jxr_linenumber" name="154" href="#154">154</a>     }
+<a class="jxr_linenumber" name="155" href="#155">155</a> 
+<a class="jxr_linenumber" name="156" href="#156">156</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestTransactionCleanup.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestTransactionCleanup.html b/xref-test/org/apache/omid/transaction/TestTransactionCleanup.html
index e88f3f8..2913845 100644
--- a/xref-test/org/apache/omid/transaction/TestTransactionCleanup.html
+++ b/xref-test/org/apache/omid/transaction/TestTransactionCleanup.html
@@ -27,105 +27,106 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.AbortException;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.ForwardingTSOFuture;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anySetOf;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.eq;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  
-<a class="jxr_linenumber" name="41" href="#41">41</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestTransactionCleanup.html">TestTransactionCleanup</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
-<a class="jxr_linenumber" name="43" href="#43">43</a>  
-<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTransactionCleanup.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> START_TS = 1L;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"row"</span>);
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> byte[] qual = Bytes.toBytes(<span class="jxr_string">"qual"</span>);
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> byte[] data = Bytes.toBytes(<span class="jxr_string">"data"</span>);
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <em class="jxr_comment">// NOTE: This test is maybe redundant with runTestCleanupAfterConflict()</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <em class="jxr_comment">// and testCleanupWithDeleteRow() tests in TestTransactionCleanup class.</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <em class="jxr_comment">// Code in TestTransactionCleanup is a little more difficult to follow,</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <em class="jxr_comment">// lacks some assertions and includes some magic numbers, so we should</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <em class="jxr_comment">// try to review and improve the tests in these two classes in a further</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <em class="jxr_comment">// commit.</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionIsCleanedUpAfterBeingAborted(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>          <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ROWS_MODIFIED = 1;
-<a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>          <em class="jxr_comment">// Prepare the mocking results</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>          SettableFuture&lt;Long&gt; startTSF = SettableFuture.create();
-<a class="jxr_linenumber" name="66" href="#66">66</a>          startTSF.set(START_TS);
-<a class="jxr_linenumber" name="67" href="#67">67</a>          ForwardingTSOFuture&lt;Long&gt; stFF = <strong class="jxr_keyword">new</strong> ForwardingTSOFuture&lt;&gt;(startTSF);
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>          SettableFuture&lt;Long&gt; abortingF = SettableFuture.create();
-<a class="jxr_linenumber" name="70" href="#70">70</a>          abortingF.setException(<strong class="jxr_keyword">new</strong> AbortException());
-<a class="jxr_linenumber" name="71" href="#71">71</a>          ForwardingTSOFuture&lt;Long&gt; abortingFF = <strong class="jxr_keyword">new</strong> ForwardingTSOFuture&lt;&gt;(abortingF);
-<a class="jxr_linenumber" name="72" href="#72">72</a>  
-<a class="jxr_linenumber" name="73" href="#73">73</a>          <em class="jxr_comment">// Mock the TSO Client setting the right method responses</em>
-<a class="jxr_linenumber" name="74" href="#74">74</a>          TSOClient mockedTSOClient = mock(TSOClient.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>          doReturn(stFF)
-<a class="jxr_linenumber" name="77" href="#77">77</a>                  .when(mockedTSOClient).getNewStartTimestamp();
-<a class="jxr_linenumber" name="78" href="#78">78</a>  
-<a class="jxr_linenumber" name="79" href="#79">79</a>          doReturn(abortingFF)
-<a class="jxr_linenumber" name="80" href="#80">80</a>                  .when(mockedTSOClient).commit(eq(START_TS), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="81" href="#81">81</a>  
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">try</strong> (TransactionManager tm = newTransactionManager(context, mockedTSOClient);
-<a class="jxr_linenumber" name="83" href="#83">83</a>               TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>              <em class="jxr_comment">// Start a transaction and put some data in a column</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>              Transaction tx = tm.begin();
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>              Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="89" href="#89">89</a>              put.add(family, qual, data);
-<a class="jxr_linenumber" name="90" href="#90">90</a>              txTable.put(tx, put);
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>              <em class="jxr_comment">// Abort transaction when committing, so the cleanup</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>              <em class="jxr_comment">// process we want to test is triggered</em>
-<a class="jxr_linenumber" name="94" href="#94">94</a>              <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="95" href="#95">95</a>                  tm.commit(tx);
-<a class="jxr_linenumber" name="96" href="#96">96</a>              } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
-<a class="jxr_linenumber" name="97" href="#97">97</a>                  <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="98" href="#98">98</a>              }
-<a class="jxr_linenumber" name="99" href="#99">99</a>  
-<a class="jxr_linenumber" name="100" href="#100">100</a>             <em class="jxr_comment">// So now we have to check that the Delete marker introduced by the</em>
-<a class="jxr_linenumber" name="101" href="#101">101</a>             <em class="jxr_comment">// cleanup process is there</em>
-<a class="jxr_linenumber" name="102" href="#102">102</a>             Scan scan = <strong class="jxr_keyword">new</strong> Scan(row);
-<a class="jxr_linenumber" name="103" href="#103">103</a>             scan.setRaw(<strong class="jxr_keyword">true</strong>); <em class="jxr_comment">// Raw scan to obtain the deleted cells</em>
-<a class="jxr_linenumber" name="104" href="#104">104</a>             ResultScanner resultScanner = txTable.getHTable().getScanner(scan);
-<a class="jxr_linenumber" name="105" href="#105">105</a>             <strong class="jxr_keyword">int</strong> resultCount = 0;
-<a class="jxr_linenumber" name="106" href="#106">106</a>             <strong class="jxr_keyword">for</strong> (Result result : resultScanner) {
-<a class="jxr_linenumber" name="107" href="#107">107</a>                 assertEquals(result.size(), 2); <em class="jxr_comment">// Size == 2, including the put and delete from cleanup</em>
-<a class="jxr_linenumber" name="108" href="#108">108</a>                 LOG.trace(<span class="jxr_string">"Result {}"</span>, result);
-<a class="jxr_linenumber" name="109" href="#109">109</a>                 <em class="jxr_comment">// The last element of the qualifier should have the Delete marker</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a>                 byte encodedType = result.getColumnLatestCell(family, qual).getTypeByte();
-<a class="jxr_linenumber" name="111" href="#111">111</a>                 assertEquals(KeyValue.Type.codeToType(encodedType), KeyValue.Type.Delete);
-<a class="jxr_linenumber" name="112" href="#112">112</a>                 resultCount++;
-<a class="jxr_linenumber" name="113" href="#113">113</a>             }
-<a class="jxr_linenumber" name="114" href="#114">114</a>             assertEquals(resultCount, ROWS_MODIFIED);
-<a class="jxr_linenumber" name="115" href="#115">115</a>         }
-<a class="jxr_linenumber" name="116" href="#116">116</a>     }
-<a class="jxr_linenumber" name="117" href="#117">117</a> 
-<a class="jxr_linenumber" name="118" href="#118">118</a> }
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anySetOf;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.eq;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.AbortException;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.ForwardingTSOFuture;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  
+<a class="jxr_linenumber" name="42" href="#42">42</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestTransactionCleanup.html">TestTransactionCleanup</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestTransactionCleanup.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> START_TS = 1L;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"row"</span>);
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> byte[] qual = Bytes.toBytes(<span class="jxr_string">"qual"</span>);
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> byte[] data = Bytes.toBytes(<span class="jxr_string">"data"</span>);
+<a class="jxr_linenumber" name="53" href="#53">53</a>  
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <em class="jxr_comment">// NOTE: This test is maybe redundant with runTestCleanupAfterConflict()</em>
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <em class="jxr_comment">// and testCleanupWithDeleteRow() tests in TestTransactionCleanup class.</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <em class="jxr_comment">// Code in TestTransactionCleanup is a little more difficult to follow,</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <em class="jxr_comment">// lacks some assertions and includes some magic numbers, so we should</em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <em class="jxr_comment">// try to review and improve the tests in these two classes in a further</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <em class="jxr_comment">// commit.</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionIsCleanedUpAfterBeingAborted(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ROWS_MODIFIED = 1;
+<a class="jxr_linenumber" name="64" href="#64">64</a>  
+<a class="jxr_linenumber" name="65" href="#65">65</a>          <em class="jxr_comment">// Prepare the mocking results</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>          SettableFuture&lt;Long&gt; startTSF = SettableFuture.create();
+<a class="jxr_linenumber" name="67" href="#67">67</a>          startTSF.set(START_TS);
+<a class="jxr_linenumber" name="68" href="#68">68</a>          ForwardingTSOFuture&lt;Long&gt; stFF = <strong class="jxr_keyword">new</strong> ForwardingTSOFuture&lt;&gt;(startTSF);
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>          SettableFuture&lt;Long&gt; abortingF = SettableFuture.create();
+<a class="jxr_linenumber" name="71" href="#71">71</a>          abortingF.setException(<strong class="jxr_keyword">new</strong> AbortException());
+<a class="jxr_linenumber" name="72" href="#72">72</a>          ForwardingTSOFuture&lt;Long&gt; abortingFF = <strong class="jxr_keyword">new</strong> ForwardingTSOFuture&lt;&gt;(abortingF);
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <em class="jxr_comment">// Mock the TSO Client setting the right method responses</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>          TSOClient mockedTSOClient = mock(TSOClient.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>          doReturn(stFF)
+<a class="jxr_linenumber" name="78" href="#78">78</a>                  .when(mockedTSOClient).getNewStartTimestamp();
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>          doReturn(abortingFF)
+<a class="jxr_linenumber" name="81" href="#81">81</a>                  .when(mockedTSOClient).commit(eq(START_TS), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>), anySetOf(HBaseCellId.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">try</strong> (TransactionManager tm = newTransactionManager(context, mockedTSOClient);
+<a class="jxr_linenumber" name="84" href="#84">84</a>               TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>              <em class="jxr_comment">// Start a transaction and put some data in a column</em>
+<a class="jxr_linenumber" name="87" href="#87">87</a>              Transaction tx = tm.begin();
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>              Put put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="90" href="#90">90</a>              put.addColumn(family, qual, data);
+<a class="jxr_linenumber" name="91" href="#91">91</a>              txTable.put(tx, put);
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>              <em class="jxr_comment">// Abort transaction when committing, so the cleanup</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>              <em class="jxr_comment">// process we want to test is triggered</em>
+<a class="jxr_linenumber" name="95" href="#95">95</a>              <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="96" href="#96">96</a>                  tm.commit(tx);
+<a class="jxr_linenumber" name="97" href="#97">97</a>              } <strong class="jxr_keyword">catch</strong> (RollbackException e) {
+<a class="jxr_linenumber" name="98" href="#98">98</a>                  <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="99" href="#99">99</a>              }
+<a class="jxr_linenumber" name="100" href="#100">100</a> 
+<a class="jxr_linenumber" name="101" href="#101">101</a>             <em class="jxr_comment">// So now we have to check that the Delete marker introduced by the</em>
+<a class="jxr_linenumber" name="102" href="#102">102</a>             <em class="jxr_comment">// cleanup process is there</em>
+<a class="jxr_linenumber" name="103" href="#103">103</a>             Scan scan = <strong class="jxr_keyword">new</strong> Scan(row);
+<a class="jxr_linenumber" name="104" href="#104">104</a>             scan.setRaw(<strong class="jxr_keyword">true</strong>); <em class="jxr_comment">// Raw scan to obtain the deleted cells</em>
+<a class="jxr_linenumber" name="105" href="#105">105</a>             ResultScanner resultScanner = txTable.getHTable().getScanner(scan);
+<a class="jxr_linenumber" name="106" href="#106">106</a>             <strong class="jxr_keyword">int</strong> resultCount = 0;
+<a class="jxr_linenumber" name="107" href="#107">107</a>             <strong class="jxr_keyword">for</strong> (Result result : resultScanner) {
+<a class="jxr_linenumber" name="108" href="#108">108</a>                 assertEquals(result.size(), 2); <em class="jxr_comment">// Size == 2, including the put and delete from cleanup</em>
+<a class="jxr_linenumber" name="109" href="#109">109</a>                 LOG.trace(<span class="jxr_string">"Result {}"</span>, result);
+<a class="jxr_linenumber" name="110" href="#110">110</a>                 <em class="jxr_comment">// The last element of the qualifier should have the Delete marker</em>
+<a class="jxr_linenumber" name="111" href="#111">111</a>                 byte encodedType = result.getColumnLatestCell(family, qual).getTypeByte();
+<a class="jxr_linenumber" name="112" href="#112">112</a>                 assertEquals(KeyValue.Type.codeToType(encodedType), KeyValue.Type.Delete);
+<a class="jxr_linenumber" name="113" href="#113">113</a>                 resultCount++;
+<a class="jxr_linenumber" name="114" href="#114">114</a>             }
+<a class="jxr_linenumber" name="115" href="#115">115</a>             assertEquals(resultCount, ROWS_MODIFIED);
+<a class="jxr_linenumber" name="116" href="#116">116</a>         }
+<a class="jxr_linenumber" name="117" href="#117">117</a>     }
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[49/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 540cb36..c98be0d 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,9 +25,9 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2011 - 2018 Apache Software Foundation</copyright>
     <item>
-      <title>File: 139,
+      <title>File: 149,
              Errors: 0,
-             Warnings: 939,
+             Warnings: 1292,
              Infos: 0
       </title>
             <link>http://omid.incubator.apache.org/checkstyle.html</link>
@@ -52,7 +52,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  1
                 </td>
                 <td>
                   0
@@ -80,7 +80,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  4
                 </td>
                 <td>
                   0
@@ -122,7 +122,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  9
+                  18
                 </td>
                 <td>
                   0
@@ -150,7 +150,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  2
                 </td>
                 <td>
                   0
@@ -234,7 +234,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  9
                 </td>
                 <td>
                   0
@@ -248,7 +248,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  9
                 </td>
                 <td>
                   0
@@ -276,7 +276,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  5
                 </td>
                 <td>
                   0
@@ -290,7 +290,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  7
                 </td>
                 <td>
                   0
@@ -416,7 +416,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  15
+                  12
                 </td>
                 <td>
                   0
@@ -542,7 +542,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  8
+                  31
                 </td>
                 <td>
                   0
@@ -578,13 +578,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.timestamp.storage.ZKTimestampStorageModule.java">org/apache/omid/timestamp/storage/ZKTimestampStorageModule.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  1
+                  2
                 </td>
                 <td>
                   0
@@ -592,13 +592,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.ReflectionHelper.java">org/apache/omid/ReflectionHelper.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.RegionAccessWrapper.java">org/apache/hadoop/hbase/regionserver/RegionAccessWrapper.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  3
+                  8
                 </td>
                 <td>
                   0
@@ -606,13 +606,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.timestamp.storage.ZKTimestampStorageModule.java">org/apache/omid/timestamp/storage/ZKTimestampStorageModule.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.OmidSnapshotFilter.java">org/apache/omid/transaction/OmidSnapshotFilter.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  2
+                  26
                 </td>
                 <td>
                   0
@@ -620,13 +620,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.client.TSOClient.java">org/apache/omid/tso/client/TSOClient.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.CompactorScanner.java">org/apache/hadoop/hbase/regionserver/CompactorScanner.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  58
+                  19
                 </td>
                 <td>
                   0
@@ -634,13 +634,27 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.AbstractTransaction.java">org/apache/omid/transaction/AbstractTransaction.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.AttributeSetSnapshotFilter.java">org/apache/omid/transaction/AttributeSetSnapshotFilter.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  6
+                  14
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.client.TSOClient.java">org/apache/omid/tso/client/TSOClient.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  80
                 </td>
                 <td>
                   0
@@ -662,6 +676,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.AbstractTransaction.java">org/apache/omid/transaction/AbstractTransaction.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  25
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.timestamp.storage.HBaseTimestampStorageModule.java">org/apache/omid/timestamp/storage/HBaseTimestampStorageModule.java</a>
                 </td>
                 <td>
@@ -704,6 +732,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.WorldClockOracleImpl.java">org/apache/omid/tso/WorldClockOracleImpl.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  15
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.RetryProcessor.java">org/apache/omid/tso/RetryProcessor.java</a>
                 </td>
                 <td>
@@ -816,13 +858,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.client.CellId.java">org/apache/omid/tso/client/CellId.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.committable.hbase.KeyGenerator.java">org/apache/omid/committable/hbase/KeyGenerator.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  1
+                  2
                 </td>
                 <td>
                   0
@@ -830,13 +872,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.committable.hbase.KeyGenerator.java">org/apache/omid/committable/hbase/KeyGenerator.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.client.CellId.java">org/apache/omid/tso/client/CellId.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  2
+                  1
                 </td>
                 <td>
                   0
@@ -864,7 +906,21 @@ under the License.
                   0
                 </td>
                 <td>
-                  34
+                  39
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.SnapshotFilterImpl.java">org/apache/omid/transaction/SnapshotFilterImpl.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  73
                 </td>
                 <td>
                   0
@@ -900,6 +956,34 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.OmidFilterBase.java">org/apache/omid/OmidFilterBase.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  4
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.TableAccessWrapper.java">org/apache/omid/transaction/TableAccessWrapper.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  5
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.client.AbortException.java">org/apache/omid/tso/client/AbortException.java</a>
                 </td>
                 <td>
@@ -920,7 +1004,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  14
+                  15
                 </td>
                 <td>
                   0
@@ -1074,7 +1158,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  21
+                  23
                 </td>
                 <td>
                   0
@@ -1116,7 +1200,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  7
+                  6
                 </td>
                 <td>
                   0
@@ -1158,7 +1242,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  6
+                  3
                 </td>
                 <td>
                   0
@@ -1172,7 +1256,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  5
                 </td>
                 <td>
                   0
@@ -1208,13 +1292,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.RegionWrapper.java">org/apache/omid/RegionWrapper.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.timestamp.storage.ZKTimestampStorage.java">org/apache/omid/timestamp/storage/ZKTimestampStorage.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  10
+                  3
                 </td>
                 <td>
                   0
@@ -1222,13 +1306,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.timestamp.storage.ZKTimestampStorage.java">org/apache/omid/timestamp/storage/ZKTimestampStorage.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.TransactionFilters.java">org/apache/omid/transaction/TransactionFilters.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  3
+                  2
                 </td>
                 <td>
                   0
@@ -1270,7 +1354,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  11
+                  6
                 </td>
                 <td>
                   0
@@ -1292,6 +1376,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.hadoop.hbase.coprocessor.BaseRegionObserver.java">org/apache/hadoop/hbase/coprocessor/BaseRegionObserver.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  3
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.TSOStateManager.java">org/apache/omid/tso/TSOStateManager.java</a>
                 </td>
                 <td>
@@ -1326,7 +1424,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  8
+                  26
                 </td>
                 <td>
                   0
@@ -1368,7 +1466,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  6
                 </td>
                 <td>
                   0
@@ -1396,7 +1494,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  21
+                  26
                 </td>
                 <td>
                   0
@@ -1410,7 +1508,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  10
+                  12
                 </td>
                 <td>
                   0
@@ -1424,7 +1522,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  19
+                  18
                 </td>
                 <td>
                   0
@@ -1438,7 +1536,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  15
+                  11
                 </td>
                 <td>
                   0
@@ -1466,7 +1564,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  18
+                  62
                 </td>
                 <td>
                   0
@@ -1474,13 +1572,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#log4j.properties">log4j.properties</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.SnapshotFilter.java">org/apache/omid/transaction/SnapshotFilter.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  0
+                  11
                 </td>
                 <td>
                   0
@@ -1488,13 +1586,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.PostCommitActions.java">org/apache/omid/transaction/PostCommitActions.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#log4j.properties">log4j.properties</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  2
+                  0
                 </td>
                 <td>
                   0
@@ -1502,13 +1600,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.RetryProcessorImpl.java">org/apache/omid/tso/RetryProcessorImpl.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.PostCommitActions.java">org/apache/omid/transaction/PostCommitActions.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  18
+                  2
                 </td>
                 <td>
                   0
@@ -1516,13 +1614,13 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.CompactorScanner.java">org/apache/omid/transaction/CompactorScanner.java</a>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.RetryProcessorImpl.java">org/apache/omid/tso/RetryProcessorImpl.java</a>
                 </td>
                 <td>
                   0
                 </td>
                 <td>
-                  19
+                  18
                 </td>
                 <td>
                   0
@@ -1564,7 +1662,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  2
                 </td>
                 <td>
                   0
@@ -1586,6 +1684,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.HTableAccessWrapper.java">org/apache/omid/transaction/HTableAccessWrapper.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  7
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.HBaseConfigModule.java">org/apache/omid/HBaseConfigModule.java</a>
                 </td>
                 <td>
@@ -1606,7 +1718,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  14
+                  28
                 </td>
                 <td>
                   0
@@ -1620,7 +1732,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  17
+                  31
                 </td>
                 <td>
                   0
@@ -1634,7 +1746,21 @@ under the License.
                   0
                 </td>
                 <td>
-                  6
+                  2
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.CellSkipFilterBase.java">org/apache/omid/transaction/CellSkipFilterBase.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  2
                 </td>
                 <td>
                   0
@@ -1662,7 +1788,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  6
+                  7
                 </td>
                 <td>
                   0
@@ -1746,7 +1872,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  32
+                  45
                 </td>
                 <td>
                   0
@@ -1760,7 +1886,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  8
+                  5
                 </td>
                 <td>
                   0
@@ -1816,7 +1942,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  6
+                  12
                 </td>
                 <td>
                   0
@@ -1872,7 +1998,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  4
                 </td>
                 <td>
                   0
@@ -1886,7 +2012,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  11
+                  8
                 </td>
                 <td>
                   0
@@ -1928,7 +2054,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  4
                 </td>
                 <td>
                   0
@@ -1978,6 +2104,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.transaction.TransactionVisibilityFilterBase.java">org/apache/omid/transaction/TransactionVisibilityFilterBase.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  10
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://omid.incubator.apache.org/checkstyle.html#org.apache.omid.tso.client.HandshakeFailedException.java">org/apache/omid/tso/client/HandshakeFailedException.java</a>
                 </td>
                 <td>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/client-failure-management.html
----------------------------------------------------------------------
diff --git a/client-failure-management.html b/client-failure-management.html
index ba4a905..d5a64b7 100644
--- a/client-failure-management.html
+++ b/client-failure-management.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Management of Client Failures</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>Management of Client Failures</h1>
+            <h1>Management of Client Failures</h1>
 <p>Upon user application crashes, Transactional Clients may leave some orphaned data in the datastore, even though the data in the datastore is kept in a consistent state. When another Transactional Client comes across this data, it will check whether the associated transaction was committed or not. If the data belongs to a transaction which has not been committed, and the transaction id is lower than the low watermark, then the data is deleted, since it belongs to a transaction that can never be committed.</p>
 <p>If data belongs to a transaction that was already committed, this means that the Transactional Client crashed between sending the commit request and completing the transaction in the commit table. This means that shadow cells have not been deleted. The Transactional Client reading will write the shadow cell for the orphan data. However, it is not able to complete the transaction in the commit table as it can not guarantee that shadow cells have been written for all cells in the transaction, since only the crashed client knew which cells it had written to. Consequently, this means that the commit table can grow indefinitely. Initially, this flaw should not cause many problems, since:</p>
 

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/coding-guide-and-style.html
----------------------------------------------------------------------
diff --git a/coding-guide-and-style.html b/coding-guide-and-style.html
index ad5e140..0bcdebb 100644
--- a/coding-guide-and-style.html
+++ b/coding-guide-and-style.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; Coding Guide</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -207,19 +207,7 @@
                 
         <div id="bodyColumn" >
                                   
-            <!--
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
---><h1>Coding Guide</h1>
+            <h1>Coding Guide</h1>
 <p>The basic principle is to always write code that is testable, easy to understand, extensible, resistant to bugs. Code is written once but read by many people so we need to focus also on the next person that will read it:</p>
 
 <ul>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/cpd.html
----------------------------------------------------------------------
diff --git a/cpd.html b/cpd.html
index 32cc75e..b6981bd 100644
--- a/cpd.html
+++ b/cpd.html
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-07-23 
+ | Generated by Apache Maven Doxia Site Renderer 1.7 at 2018-09-20 
  | Rendered using Apache Maven Fluido Skin 1.5
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180723" />
+    <meta name="Date-Revision-yyyymmdd" content="20180920" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Omid &#x2013; CPD Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5.min.css" />
@@ -194,11 +194,11 @@
       <div id="breadcrumbs">
         <ul class="breadcrumb">
               
-                  <li id="projectVersion">Version: 0.9.0.0
+                  <li id="projectVersion">Version: 0.8.2.11-SNAPSHOT
                     </li>
               
               
-                  <li id="publishDate" class="pull-right">Last Published: 2018-07-23</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-20</li>
             
                             </ul>
       </div>
@@ -220,24 +220,24 @@
 <tr class="b">
 <td>org/apache/omid/examples/BasicExample.java</td>
 <td>Omid Client Examples</td>
-<td><a href="./xref/org/apache/omid/examples/BasicExample.html#L90">90</a></td></tr>
+<td><a href="./xref/org/apache/omid/examples/BasicExample.html#L93">93</a></td></tr>
 <tr class="a">
 <td>org/apache/omid/examples/ConfigurationExample.java</td>
 <td>Omid Client Examples</td>
-<td><a href="./xref/org/apache/omid/examples/ConfigurationExample.html#L107">107</a></td></tr>
+<td><a href="./xref/org/apache/omid/examples/ConfigurationExample.html#L110">110</a></td></tr>
 <tr class="b"><td colspan='3'>
 <div>
 <pre>            LOG.info(&quot;Transaction {} STARTED&quot;, tx);
 
             Put row1 = new Put(exampleRow1);
-            row1.add(family, qualifier, dataValue1);
+            row1.addColumn(family, qualifier, dataValue1);
             txTable.put(tx, row1);
             LOG.info(&quot;Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} &quot;,
                      tx, userTableName, Bytes.toString(exampleRow1), Bytes.toString(family),
                      Bytes.toString(qualifier), Bytes.toString(dataValue1));
 
             Put row2 = new Put(exampleRow2);
-            row2.add(family, qualifier, dataValue2);
+            row2.addColumn(family, qualifier, dataValue2);
             txTable.put(tx, row2);
             LOG.info(&quot;Transaction {} trying to write a new value in [TABLE:ROW/CF/Q] =&gt; {}:{}/{}/{} = {} &quot;,
                      tx, userTableName, Bytes.toString(exampleRow2), Bytes.toString(family),
@@ -253,11 +253,11 @@
 <tr class="b">
 <td>org/apache/omid/examples/BasicExample.java</td>
 <td>Omid Client Examples</td>
-<td><a href="./xref/org/apache/omid/examples/BasicExample.html#L64">64</a></td></tr>
+<td><a href="./xref/org/apache/omid/examples/BasicExample.html#L66">66</a></td></tr>
 <tr class="a">
 <td>org/apache/omid/examples/ConfigurationExample.java</td>
 <td>Omid Client Examples</td>
-<td><a href="./xref/org/apache/omid/examples/ConfigurationExample.html#L47">47</a></td></tr>
+<td><a href="./xref/org/apache/omid/examples/ConfigurationExample.html#L49">49</a></td></tr>
 <tr class="b"><td colspan='3'>
 <div>
 <pre>    private static final Logger LOG = LoggerFactory.getLogger(BasicExample.class);


[34/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestShadowCells.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestShadowCells.html b/xref-test/org/apache/omid/transaction/TestShadowCells.html
index 7a88640..41464eb 100644
--- a/xref-test/org/apache/omid/transaction/TestShadowCells.html
+++ b/xref-test/org/apache/omid/transaction/TestShadowCells.html
@@ -27,495 +27,500 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTableInterface;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.mockito.Matchers;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicBoolean;
-<a class="jxr_linenumber" name="51" href="#51">51</a>  
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.hasCell;
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.hasShadowCell;
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyInt;
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doThrow;
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.never;
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.times;
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="66" href="#66">66</a>  
-<a class="jxr_linenumber" name="67" href="#67">67</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestShadowCells.html">TestShadowCells</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestShadowCells.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
-<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO_SERVER_PORT = 1234;
-<a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_TABLE = <span class="jxr_string">"test"</span>;
-<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY = <span class="jxr_string">"data"</span>;
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"test-sc"</span>);
-<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"test-sc1"</span>);
-<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row2 = Bytes.toBytes(<span class="jxr_string">"test-sc2"</span>);
-<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row3 = Bytes.toBytes(<span class="jxr_string">"test-sc3"</span>);
-<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
-<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.hasCell;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.hasShadowCell;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyInt;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doThrow;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.never;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.times;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicBoolean;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.mockito.Matchers;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Charsets;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestShadowCells.html">TestShadowCells</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestShadowCells.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TSO_SERVER_HOST = <span class="jxr_string">"localhost"</span>;
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TSO_SERVER_PORT = 1234;
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_TABLE = <span class="jxr_string">"test"</span>;
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY = <span class="jxr_string">"data"</span>;
+<a class="jxr_linenumber" name="78" href="#78">78</a>  
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"test-sc"</span>);
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row1 = Bytes.toBytes(<span class="jxr_string">"test-sc1"</span>);
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row2 = Bytes.toBytes(<span class="jxr_string">"test-sc2"</span>);
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] row3 = Bytes.toBytes(<span class="jxr_string">"test-sc3"</span>);
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"testdata"</span>);
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] data1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
 <a class="jxr_linenumber" name="86" href="#86">86</a>  
-<a class="jxr_linenumber" name="87" href="#87">87</a>      @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellsBasics(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="89" href="#89">89</a>  
-<a class="jxr_linenumber" name="90" href="#90">90</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>          HBaseTransaction t1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          <em class="jxr_comment">// Test shadow cells are created properly</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="98" href="#98">98</a>          put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="99" href="#99">99</a>          table.put(t1, put);
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>         <em class="jxr_comment">// Before commit test that only the cell is there</em>
-<a class="jxr_linenumber" name="102" href="#102">102</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="103" href="#103">103</a>                 <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="104" href="#104">104</a>         assertFalse(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="105" href="#105">105</a>                 <span class="jxr_string">"Shadow cell shouldn't be there"</span>);
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>         tm.commit(t1);
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>         <em class="jxr_comment">// After commit test that both cell and shadow cell are there</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="111" href="#111">111</a>                 <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="112" href="#112">112</a>         assertTrue(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="113" href="#113">113</a>                 <span class="jxr_string">"Shadow cell should be there"</span>);
-<a class="jxr_linenumber" name="114" href="#114">114</a> 
-<a class="jxr_linenumber" name="115" href="#115">115</a>         <em class="jxr_comment">// Test that we can make a valid read after adding a shadow cell without hitting the commit table</em>
-<a class="jxr_linenumber" name="116" href="#116">116</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
-<a class="jxr_linenumber" name="117" href="#117">117</a> 
-<a class="jxr_linenumber" name="118" href="#118">118</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="119" href="#119">119</a>         hbaseOmidClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="120" href="#120">120</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="121" href="#121">121</a>         TransactionManager tm2 = HBaseTransactionManager.builder(hbaseOmidClientConf)
-<a class="jxr_linenumber" name="122" href="#122">122</a>                                                         .commitTableClient(commitTableClient)
-<a class="jxr_linenumber" name="123" href="#123">123</a>                                                         .build();
-<a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a>         Transaction t2 = tm2.begin();
-<a class="jxr_linenumber" name="126" href="#126">126</a>         Get get = <strong class="jxr_keyword">new</strong> Get(row);
-<a class="jxr_linenumber" name="127" href="#127">127</a>         get.addColumn(family, qualifier);
-<a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>         Result getResult = table.get(t2, get);
-<a class="jxr_linenumber" name="130" href="#130">130</a>         assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Values should be the same"</span>);
-<a class="jxr_linenumber" name="131" href="#131">131</a>         verify(commitTableClient, never()).getCommitTimestamp(anyLong());
-<a class="jxr_linenumber" name="132" href="#132">132</a>     }
-<a class="jxr_linenumber" name="133" href="#133">133</a> 
-<a class="jxr_linenumber" name="134" href="#134">134</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCrashingAfterCommitDoesNotWriteShadowCells(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="136" href="#136">136</a> 
-<a class="jxr_linenumber" name="137" href="#137">137</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="140" href="#140">140</a>         hbaseOmidClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="141" href="#141">141</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="142" href="#142">142</a>         PostCommitActions syncPostCommitter = spy(
-<a class="jxr_linenumber" name="143" href="#143">143</a>                 <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
-<a class="jxr_linenumber" name="144" href="#144">144</a>         AbstractTransactionManager tm = spy((AbstractTransactionManager) HBaseTransactionManager.builder(hbaseOmidClientConf)
-<a class="jxr_linenumber" name="145" href="#145">145</a>                 .postCommitter(syncPostCommitter)
-<a class="jxr_linenumber" name="146" href="#146">146</a>                 .commitTableClient(commitTableClient)
-<a class="jxr_linenumber" name="147" href="#147">147</a>                 .build());
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
-<a class="jxr_linenumber" name="150" href="#150">150</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="151" href="#151">151</a> 
-<a class="jxr_linenumber" name="152" href="#152">152</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="153" href="#153">153</a> 
-<a class="jxr_linenumber" name="154" href="#154">154</a>         HBaseTransaction t1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="155" href="#155">155</a> 
-<a class="jxr_linenumber" name="156" href="#156">156</a>         <em class="jxr_comment">// Test shadow cell are created properly</em>
-<a class="jxr_linenumber" name="157" href="#157">157</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="158" href="#158">158</a>         put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="159" href="#159">159</a>         table.put(t1, put);
-<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="161" href="#161">161</a>             tm.commit(t1);
-<a class="jxr_linenumber" name="162" href="#162">162</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
-<a class="jxr_linenumber" name="163" href="#163">163</a>             <em class="jxr_comment">// Do nothing</em>
-<a class="jxr_linenumber" name="164" href="#164">164</a>         }
-<a class="jxr_linenumber" name="165" href="#165">165</a> 
-<a class="jxr_linenumber" name="166" href="#166">166</a>         <em class="jxr_comment">// After commit with the emulated crash, test that only the cell is there</em>
-<a class="jxr_linenumber" name="167" href="#167">167</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="168" href="#168">168</a>                 <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="169" href="#169">169</a>         assertFalse(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="170" href="#170">170</a>                 <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="173" href="#173">173</a>         Get get = <strong class="jxr_keyword">new</strong> Get(row);
-<a class="jxr_linenumber" name="174" href="#174">174</a>         get.addColumn(family, qualifier);
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>         Result getResult = table.get(t2, get);
-<a class="jxr_linenumber" name="177" href="#177">177</a>         assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="178" href="#178">178</a>         verify(commitTableClient, times(1)).getCommitTimestamp(anyLong());
-<a class="jxr_linenumber" name="179" href="#179">179</a>     }
-<a class="jxr_linenumber" name="180" href="#180">180</a> 
-<a class="jxr_linenumber" name="181" href="#181">181</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellIsHealedAfterCommitCrash(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="183" href="#183">183</a> 
-<a class="jxr_linenumber" name="184" href="#184">184</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
-<a class="jxr_linenumber" name="185" href="#185">185</a> 
-<a class="jxr_linenumber" name="186" href="#186">186</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="187" href="#187">187</a>         hbaseOmidClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="188" href="#188">188</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="189" href="#189">189</a>         PostCommitActions syncPostCommitter = spy(
-<a class="jxr_linenumber" name="190" href="#190">190</a>                 <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
-<a class="jxr_linenumber" name="191" href="#191">191</a>         AbstractTransactionManager tm = spy((AbstractTransactionManager) HBaseTransactionManager.builder(hbaseOmidClientConf)
-<a class="jxr_linenumber" name="192" href="#192">192</a>                 .postCommitter(syncPostCommitter)
-<a class="jxr_linenumber" name="193" href="#193">193</a>                 .commitTableClient(commitTableClient)
-<a class="jxr_linenumber" name="194" href="#194">194</a>                 .build());
-<a class="jxr_linenumber" name="195" href="#195">195</a> 
-<a class="jxr_linenumber" name="196" href="#196">196</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="198" href="#198">198</a> 
-<a class="jxr_linenumber" name="199" href="#199">199</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="200" href="#200">200</a> 
-<a class="jxr_linenumber" name="201" href="#201">201</a>         HBaseTransaction t1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="202" href="#202">202</a> 
-<a class="jxr_linenumber" name="203" href="#203">203</a>         <em class="jxr_comment">// Test shadow cell are created properly</em>
-<a class="jxr_linenumber" name="204" href="#204">204</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="205" href="#205">205</a>         put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="206" href="#206">206</a>         table.put(t1, put);
-<a class="jxr_linenumber" name="207" href="#207">207</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="208" href="#208">208</a>             tm.commit(t1);
-<a class="jxr_linenumber" name="209" href="#209">209</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) Crash</em>
-<a class="jxr_linenumber" name="210" href="#210">210</a>             <em class="jxr_comment">// Do nothing</em>
-<a class="jxr_linenumber" name="211" href="#211">211</a>         }
-<a class="jxr_linenumber" name="212" href="#212">212</a> 
-<a class="jxr_linenumber" name="213" href="#213">213</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="214" href="#214">214</a>                 <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="215" href="#215">215</a>         assertFalse(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="216" href="#216">216</a>                 <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>         Transaction t2 = tm.begin();
-<a class="jxr_linenumber" name="219" href="#219">219</a>         Get get = <strong class="jxr_keyword">new</strong> Get(row);
-<a class="jxr_linenumber" name="220" href="#220">220</a>         get.addColumn(family, qualifier);
-<a class="jxr_linenumber" name="221" href="#221">221</a> 
-<a class="jxr_linenumber" name="222" href="#222">222</a>         <em class="jxr_comment">// This get should heal the shadow cell</em>
-<a class="jxr_linenumber" name="223" href="#223">223</a>         Result getResult = table.get(t2, get);
-<a class="jxr_linenumber" name="224" href="#224">224</a>         assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Values should be the same"</span>);
-<a class="jxr_linenumber" name="225" href="#225">225</a>         verify(commitTableClient, times(1)).getCommitTimestamp(anyLong());
-<a class="jxr_linenumber" name="226" href="#226">226</a> 
-<a class="jxr_linenumber" name="227" href="#227">227</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="228" href="#228">228</a>                 <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="229" href="#229">229</a>         assertTrue(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="230" href="#230">230</a>                 <span class="jxr_string">"Shadow cell should be there after being healed"</span>);
-<a class="jxr_linenumber" name="231" href="#231">231</a> 
-<a class="jxr_linenumber" name="232" href="#232">232</a>         <em class="jxr_comment">// As the shadow cell is healed, this get shouldn't have to hit the storage,</em>
-<a class="jxr_linenumber" name="233" href="#233">233</a>         <em class="jxr_comment">// so the number of invocations to commitTableClient.getCommitTimestamp()</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>         <em class="jxr_comment">// should remain the same</em>
-<a class="jxr_linenumber" name="235" href="#235">235</a>         getResult = table.get(t2, get);
-<a class="jxr_linenumber" name="236" href="#236">236</a>         assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Values should be the same"</span>);
-<a class="jxr_linenumber" name="237" href="#237">237</a>         verify(commitTableClient, times(1)).getCommitTimestamp(anyLong());
-<a class="jxr_linenumber" name="238" href="#238">238</a>     }
-<a class="jxr_linenumber" name="239" href="#239">239</a> 
-<a class="jxr_linenumber" name="240" href="#240">240</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="241" href="#241">241</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionNeverCompletesWhenAnExceptionIsThrownUpdatingShadowCells(ITestContext context)
-<a class="jxr_linenumber" name="242" href="#242">242</a>             <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="243" href="#243">243</a> 
-<a class="jxr_linenumber" name="244" href="#244">244</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
-<a class="jxr_linenumber" name="245" href="#245">245</a> 
-<a class="jxr_linenumber" name="246" href="#246">246</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="247" href="#247">247</a>         hbaseOmidClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
-<a class="jxr_linenumber" name="248" href="#248">248</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="249" href="#249">249</a>         PostCommitActions syncPostCommitter = spy(
-<a class="jxr_linenumber" name="250" href="#250">250</a>                 <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
-<a class="jxr_linenumber" name="251" href="#251">251</a>         AbstractTransactionManager tm = spy((AbstractTransactionManager) HBaseTransactionManager.builder(hbaseOmidClientConf)
-<a class="jxr_linenumber" name="252" href="#252">252</a>                 .postCommitter(syncPostCommitter)
-<a class="jxr_linenumber" name="253" href="#253">253</a>                 .commitTableClient(commitTableClient)
-<a class="jxr_linenumber" name="254" href="#254">254</a>                 .build());
-<a class="jxr_linenumber" name="255" href="#255">255</a> 
-<a class="jxr_linenumber" name="256" href="#256">256</a>         <strong class="jxr_keyword">final</strong> TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="257" href="#257">257</a> 
-<a class="jxr_linenumber" name="258" href="#258">258</a>         HBaseTransaction tx = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="259" href="#259">259</a> 
-<a class="jxr_linenumber" name="260" href="#260">260</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="261" href="#261">261</a>         put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="262" href="#262">262</a>         table.put(tx, put);
-<a class="jxr_linenumber" name="263" href="#263">263</a> 
-<a class="jxr_linenumber" name="264" href="#264">264</a>         <em class="jxr_comment">// This line emulates an error accessing the target table by disabling it</em>
-<a class="jxr_linenumber" name="265" href="#265">265</a>         doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;ListenableFuture&lt;Void&gt;&gt;() {
-<a class="jxr_linenumber" name="266" href="#266">266</a>             @Override
-<a class="jxr_linenumber" name="267" href="#267">267</a>             <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; answer(InvocationOnMock invocation) <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="268" href="#268">268</a>                 table.flushCommits();
-<a class="jxr_linenumber" name="269" href="#269">269</a>                 HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
-<a class="jxr_linenumber" name="270" href="#270">270</a>                 admin.disableTable(table.getTableName());
-<a class="jxr_linenumber" name="271" href="#271">271</a>                 <strong class="jxr_keyword">return</strong> (ListenableFuture&lt;Void&gt;) invocation.callRealMethod();
-<a class="jxr_linenumber" name="272" href="#272">272</a>             }
-<a class="jxr_linenumber" name="273" href="#273">273</a>         }).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="274" href="#274">274</a> 
-<a class="jxr_linenumber" name="275" href="#275">275</a>         <em class="jxr_comment">// When committing, an IOException should be thrown in syncPostCommitter.updateShadowCells() and placed in the</em>
-<a class="jxr_linenumber" name="276" href="#276">276</a>         <em class="jxr_comment">// future as a TransactionManagerException. However, the exception is never retrieved in the</em>
-<a class="jxr_linenumber" name="277" href="#277">277</a>         <em class="jxr_comment">// AbstractTransactionManager as the future is never checked.</em>
-<a class="jxr_linenumber" name="278" href="#278">278</a>         <em class="jxr_comment">// This requires to set the HConstants.HBASE_CLIENT_RETRIES_NUMBER in the HBase config to a finite number:</em>
-<a class="jxr_linenumber" name="279" href="#279">279</a>         <em class="jxr_comment">// e.g -&gt; hbaseConf.setInt(HBASE_CLIENT_RETRIES_NUMBER, 3); Otherwise it will get stuck in tm.commit();</em>
-<a class="jxr_linenumber" name="280" href="#280">280</a> 
-<a class="jxr_linenumber" name="281" href="#281">281</a>         tm.commit(tx); <em class="jxr_comment">// Tx effectively commits but the post Commit Actions failed when updating the shadow cells</em>
-<a class="jxr_linenumber" name="282" href="#282">282</a> 
-<a class="jxr_linenumber" name="283" href="#283">283</a>         <em class="jxr_comment">// Re-enable table to allow the required checks below</em>
-<a class="jxr_linenumber" name="284" href="#284">284</a>         HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
-<a class="jxr_linenumber" name="285" href="#285">285</a>         admin.enableTable(table.getTableName());
-<a class="jxr_linenumber" name="286" href="#286">286</a> 
-<a class="jxr_linenumber" name="287" href="#287">287</a>         <em class="jxr_comment">// 1) check that shadow cell is not created...</em>
-<a class="jxr_linenumber" name="288" href="#288">288</a>         assertTrue(hasCell(row, family, qualifier, tx.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="289" href="#289">289</a>                 <span class="jxr_string">"Cell should be there"</span>);
-<a class="jxr_linenumber" name="290" href="#290">290</a>         assertFalse(hasShadowCell(row, family, qualifier, tx.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
-<a class="jxr_linenumber" name="291" href="#291">291</a>                 <span class="jxr_string">"Shadow cell should not be there"</span>);
-<a class="jxr_linenumber" name="292" href="#292">292</a>         <em class="jxr_comment">// 2) and thus, completeTransaction() was never called on the commit table...</em>
-<a class="jxr_linenumber" name="293" href="#293">293</a>         verify(commitTableClient, times(0)).completeTransaction(anyLong());
-<a class="jxr_linenumber" name="294" href="#294">294</a>         <em class="jxr_comment">// 3) ...and commit value still in commit table</em>
-<a class="jxr_linenumber" name="295" href="#295">295</a>         assertTrue(commitTableClient.getCommitTimestamp(tx.getStartTimestamp()).get().isPresent());
-<a class="jxr_linenumber" name="296" href="#296">296</a> 
-<a class="jxr_linenumber" name="297" href="#297">297</a>     }
-<a class="jxr_linenumber" name="298" href="#298">298</a> 
-<a class="jxr_linenumber" name="299" href="#299">299</a>     @Test(timeOut = 60_000)
-<a class="jxr_linenumber" name="300" href="#300">300</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRaceConditionBetweenReaderAndWriterThreads(<strong class="jxr_keyword">final</strong> ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="301" href="#301">301</a>         <strong class="jxr_keyword">final</strong> CountDownLatch readAfterCommit = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
-<a class="jxr_linenumber" name="302" href="#302">302</a>         <strong class="jxr_keyword">final</strong> CountDownLatch postCommitBegin = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
-<a class="jxr_linenumber" name="303" href="#303">303</a>         <strong class="jxr_keyword">final</strong> CountDownLatch postCommitEnd = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
-<a class="jxr_linenumber" name="304" href="#304">304</a> 
-<a class="jxr_linenumber" name="305" href="#305">305</a>         <strong class="jxr_keyword">final</strong> AtomicBoolean readFailed = <strong class="jxr_keyword">new</strong> AtomicBoolean(false);
-<a class="jxr_linenumber" name="306" href="#306">306</a>         PostCommitActions syncPostCommitter =
-<a class="jxr_linenumber" name="307" href="#307">307</a>                 spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), getCommitTable(context).getClient()));
-<a class="jxr_linenumber" name="308" href="#308">308</a>         AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager(context, syncPostCommitter);
-<a class="jxr_linenumber" name="309" href="#309">309</a> 
-<a class="jxr_linenumber" name="310" href="#310">310</a>         doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;ListenableFuture&lt;Void&gt;&gt;() {
-<a class="jxr_linenumber" name="311" href="#311">311</a>             @Override
-<a class="jxr_linenumber" name="312" href="#312">312</a>             <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; answer(InvocationOnMock invocation) <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="313" href="#313">313</a>                 LOG.info(<span class="jxr_string">"Releasing readAfterCommit barrier"</span>);
-<a class="jxr_linenumber" name="314" href="#314">314</a>                 readAfterCommit.countDown();
-<a class="jxr_linenumber" name="315" href="#315">315</a>                 LOG.info(<span class="jxr_string">"Waiting postCommitBegin barrier"</span>);
-<a class="jxr_linenumber" name="316" href="#316">316</a>                 postCommitBegin.await();
-<a class="jxr_linenumber" name="317" href="#317">317</a>                 ListenableFuture&lt;Void&gt; result = (ListenableFuture&lt;Void&gt;) invocation.callRealMethod();
-<a class="jxr_linenumber" name="318" href="#318">318</a>                 LOG.info(<span class="jxr_string">"Releasing postCommitEnd barrier"</span>);
-<a class="jxr_linenumber" name="319" href="#319">319</a>                 postCommitEnd.countDown();
-<a class="jxr_linenumber" name="320" href="#320">320</a>                 <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="321" href="#321">321</a>             }
-<a class="jxr_linenumber" name="322" href="#322">322</a>         }).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="323" href="#323">323</a> 
-<a class="jxr_linenumber" name="324" href="#324">324</a>         <em class="jxr_comment">// Start transaction on write thread</em>
-<a class="jxr_linenumber" name="325" href="#325">325</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
-<a class="jxr_linenumber" name="326" href="#326">326</a> 
-<a class="jxr_linenumber" name="327" href="#327">327</a>         <strong class="jxr_keyword">final</strong> HBaseTransaction t1 = (HBaseTransaction) tm.begin();
-<a class="jxr_linenumber" name="328" href="#328">328</a> 
-<a class="jxr_linenumber" name="329" href="#329">329</a>         <em class="jxr_comment">// Start read thread</em>
-<a class="jxr_linenumber" name="330" href="#330">330</a>         Thread readThread = <strong class="jxr_keyword">new</strong> Thread(<span class="jxr_string">"Read Thread"</span>) {
-<a class="jxr_linenumber" name="331" href="#331">331</a>             @Override
-<a class="jxr_linenumber" name="332" href="#332">332</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
-<a class="jxr_linenumber" name="333" href="#333">333</a>                 LOG.info(<span class="jxr_string">"Waiting readAfterCommit barrier"</span>);
-<a class="jxr_linenumber" name="334" href="#334">334</a>                 <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="335" href="#335">335</a>                     readAfterCommit.await();
-<a class="jxr_linenumber" name="336" href="#336">336</a>                     <strong class="jxr_keyword">final</strong> TTable table = spy(<strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE));
-<a class="jxr_linenumber" name="337" href="#337">337</a>                     doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;List&lt;KeyValue&gt;&gt;() {
-<a class="jxr_linenumber" name="338" href="#338">338</a>                         @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="339" href="#339">339</a>                         @Override
-<a class="jxr_linenumber" name="340" href="#340">340</a>                         <strong class="jxr_keyword">public</strong> List&lt;KeyValue&gt; answer(InvocationOnMock invocation) <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="341" href="#341">341</a>                             LOG.info(<span class="jxr_string">"Release postCommitBegin barrier"</span>);
-<a class="jxr_linenumber" name="342" href="#342">342</a>                             postCommitBegin.countDown();
-<a class="jxr_linenumber" name="343" href="#343">343</a>                             LOG.info(<span class="jxr_string">"Waiting postCommitEnd barrier"</span>);
-<a class="jxr_linenumber" name="344" href="#344">344</a>                             postCommitEnd.await();
-<a class="jxr_linenumber" name="345" href="#345">345</a>                             <strong class="jxr_keyword">return</strong> (List&lt;KeyValue&gt;) invocation.callRealMethod();
-<a class="jxr_linenumber" name="346" href="#346">346</a>                         }
-<a class="jxr_linenumber" name="347" href="#347">347</a>                     }).when(table).filterCellsForSnapshot(Matchers.&lt;List&lt;Cell&gt;&gt;any(),
-<a class="jxr_linenumber" name="348" href="#348">348</a>                             any(HBaseTransaction.<strong class="jxr_keyword">class</strong>), anyInt());
-<a class="jxr_linenumber" name="349" href="#349">349</a> 
-<a class="jxr_linenumber" name="350" href="#350">350</a>                     TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="351" href="#351">351</a>                     <strong class="jxr_keyword">if</strong> (hasShadowCell(row,
-<a class="jxr_linenumber" name="352" href="#352">352</a>                             family,
-<a class="jxr_linenumber" name="353" href="#353">353</a>                             qualifier,
-<a class="jxr_linenumber" name="354" href="#354">354</a>                             t1.getStartTimestamp(),
-<a class="jxr_linenumber" name="355" href="#355">355</a>                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table))) {
-<a class="jxr_linenumber" name="356" href="#356">356</a>                         readFailed.set(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="357" href="#357">357</a>                     }
-<a class="jxr_linenumber" name="358" href="#358">358</a> 
-<a class="jxr_linenumber" name="359" href="#359">359</a>                     Transaction t = tm.begin();
-<a class="jxr_linenumber" name="360" href="#360">360</a>                     Get get = <strong class="jxr_keyword">new</strong> Get(row);
-<a class="jxr_linenumber" name="361" href="#361">361</a>                     get.addColumn(family, qualifier);
-<a class="jxr_linenumber" name="362" href="#362">362</a> 
-<a class="jxr_linenumber" name="363" href="#363">363</a>                     Result getResult = table.get(t, get);
-<a class="jxr_linenumber" name="364" href="#364">364</a>                     Cell cell = getResult.getColumnLatestCell(family, qualifier);
-<a class="jxr_linenumber" name="365" href="#365">365</a>                     <strong class="jxr_keyword">if</strong> (!Arrays.equals(data1, CellUtil.cloneValue(cell))
-<a class="jxr_linenumber" name="366" href="#366">366</a>                             || !hasShadowCell(row,
-<a class="jxr_linenumber" name="367" href="#367">367</a>                             family,
-<a class="jxr_linenumber" name="368" href="#368">368</a>                             qualifier,
-<a class="jxr_linenumber" name="369" href="#369">369</a>                             cell.getTimestamp(),
-<a class="jxr_linenumber" name="370" href="#370">370</a>                             <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table))) {
-<a class="jxr_linenumber" name="371" href="#371">371</a>                         readFailed.set(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="372" href="#372">372</a>                     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="373" href="#373">373</a>                         LOG.info(<span class="jxr_string">"Read succeeded"</span>);
-<a class="jxr_linenumber" name="374" href="#374">374</a>                     }
-<a class="jxr_linenumber" name="375" href="#375">375</a>                 } <strong class="jxr_keyword">catch</strong> (Throwable e) {
-<a class="jxr_linenumber" name="376" href="#376">376</a>                     readFailed.set(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="377" href="#377">377</a>                     LOG.error(<span class="jxr_string">"Error whilst reading"</span>, e);
-<a class="jxr_linenumber" name="378" href="#378">378</a>                 }
-<a class="jxr_linenumber" name="379" href="#379">379</a>             }
-<a class="jxr_linenumber" name="380" href="#380">380</a>         };
-<a class="jxr_linenumber" name="381" href="#381">381</a>         readThread.start();
-<a class="jxr_linenumber" name="382" href="#382">382</a> 
-<a class="jxr_linenumber" name="383" href="#383">383</a>         <em class="jxr_comment">// Write data</em>
-<a class="jxr_linenumber" name="384" href="#384">384</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="385" href="#385">385</a>         put.add(family, qualifier, data1);
-<a class="jxr_linenumber" name="386" href="#386">386</a>         table.put(t1, put);
-<a class="jxr_linenumber" name="387" href="#387">387</a>         tm.commit(t1);
-<a class="jxr_linenumber" name="388" href="#388">388</a> 
-<a class="jxr_linenumber" name="389" href="#389">389</a>         readThread.join();
-<a class="jxr_linenumber" name="390" href="#390">390</a> 
-<a class="jxr_linenumber" name="391" href="#391">391</a>         assertFalse(readFailed.get(), <span class="jxr_string">"Read should have succeeded"</span>);
-<a class="jxr_linenumber" name="392" href="#392">392</a> 
-<a class="jxr_linenumber" name="393" href="#393">393</a>     }
-<a class="jxr_linenumber" name="394" href="#394">394</a> 
-<a class="jxr_linenumber" name="395" href="#395">395</a>     <em class="jxr_comment">// TODO: After removing the legacy shadow cell suffix, maybe we should mix the assertions in this test with</em>
-<a class="jxr_linenumber" name="396" href="#396">396</a>     <em class="jxr_comment">// the ones in the previous tests in a further commit</em>
+<a class="jxr_linenumber" name="87" href="#87">87</a>  
+<a class="jxr_linenumber" name="88" href="#88">88</a>      @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellsBasics(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="90" href="#90">90</a>  
+<a class="jxr_linenumber" name="91" href="#91">91</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="94" href="#94">94</a>  
+<a class="jxr_linenumber" name="95" href="#95">95</a>          HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>          <em class="jxr_comment">// Test shadow cells are created properly</em>
+<a class="jxr_linenumber" name="98" href="#98">98</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="100" href="#100">100</a>         table.put(t1, put);
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>         <em class="jxr_comment">// Before commit test that only the cell is there</em>
+<a class="jxr_linenumber" name="103" href="#103">103</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="104" href="#104">104</a>                 <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="105" href="#105">105</a>         assertFalse(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="106" href="#106">106</a>                 <span class="jxr_string">"Shadow cell shouldn't be there"</span>);
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>         tm.commit(t1);
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <em class="jxr_comment">// After commit test that both cell and shadow cell are there</em>
+<a class="jxr_linenumber" name="111" href="#111">111</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="112" href="#112">112</a>                 <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="113" href="#113">113</a>         assertTrue(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="114" href="#114">114</a>                 <span class="jxr_string">"Shadow cell should be there"</span>);
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a>         <em class="jxr_comment">// Test that we can make a valid read after adding a shadow cell without hitting the commit table</em>
+<a class="jxr_linenumber" name="117" href="#117">117</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
+<a class="jxr_linenumber" name="118" href="#118">118</a> 
+<a class="jxr_linenumber" name="119" href="#119">119</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="120" href="#120">120</a>         hbaseOmidClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="121" href="#121">121</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="122" href="#122">122</a>         TransactionManager tm2 = HBaseTransactionManager.builder(hbaseOmidClientConf)
+<a class="jxr_linenumber" name="123" href="#123">123</a>                                                         .commitTableClient(commitTableClient)
+<a class="jxr_linenumber" name="124" href="#124">124</a>                                                         .build();
+<a class="jxr_linenumber" name="125" href="#125">125</a> 
+<a class="jxr_linenumber" name="126" href="#126">126</a>         Transaction t2 = tm2.begin();
+<a class="jxr_linenumber" name="127" href="#127">127</a>         Get get = <strong class="jxr_keyword">new</strong> Get(row);
+<a class="jxr_linenumber" name="128" href="#128">128</a>         get.addColumn(family, qualifier);
+<a class="jxr_linenumber" name="129" href="#129">129</a> 
+<a class="jxr_linenumber" name="130" href="#130">130</a>         Result getResult = table.get(t2, get);
+<a class="jxr_linenumber" name="131" href="#131">131</a>         assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Values should be the same"</span>);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         verify(commitTableClient, never()).getCommitTimestamp(anyLong());
+<a class="jxr_linenumber" name="133" href="#133">133</a>     }
+<a class="jxr_linenumber" name="134" href="#134">134</a> 
+<a class="jxr_linenumber" name="135" href="#135">135</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="136" href="#136">136</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCrashingAfterCommitDoesNotWriteShadowCells(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="137" href="#137">137</a> 
+<a class="jxr_linenumber" name="138" href="#138">138</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="141" href="#141">141</a>         hbaseOmidClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="142" href="#142">142</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="143" href="#143">143</a>         PostCommitActions syncPostCommitter = spy(
+<a class="jxr_linenumber" name="144" href="#144">144</a>                 <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
+<a class="jxr_linenumber" name="145" href="#145">145</a>         AbstractTransactionManager tm = spy((AbstractTransactionManager) HBaseTransactionManager.builder(hbaseOmidClientConf)
+<a class="jxr_linenumber" name="146" href="#146">146</a>                 .postCommitter(syncPostCommitter)
+<a class="jxr_linenumber" name="147" href="#147">147</a>                 .commitTableClient(commitTableClient)
+<a class="jxr_linenumber" name="148" href="#148">148</a>                 .build());
+<a class="jxr_linenumber" name="149" href="#149">149</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
+<a class="jxr_linenumber" name="151" href="#151">151</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>         HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="156" href="#156">156</a> 
+<a class="jxr_linenumber" name="157" href="#157">157</a>         <em class="jxr_comment">// Test shadow cell are created properly</em>
+<a class="jxr_linenumber" name="158" href="#158">158</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="159" href="#159">159</a>         put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="160" href="#160">160</a>         table.put(t1, put);
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="162" href="#162">162</a>             tm.commit(t1);
+<a class="jxr_linenumber" name="163" href="#163">163</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) crash</em>
+<a class="jxr_linenumber" name="164" href="#164">164</a>             <em class="jxr_comment">// Do nothing</em>
+<a class="jxr_linenumber" name="165" href="#165">165</a>         }
+<a class="jxr_linenumber" name="166" href="#166">166</a> 
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <em class="jxr_comment">// After commit with the emulated crash, test that only the cell is there</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="169" href="#169">169</a>                 <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="170" href="#170">170</a>         assertFalse(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="171" href="#171">171</a>                 <span class="jxr_string">"Shadow cell should not be there"</span>);
+<a class="jxr_linenumber" name="172" href="#172">172</a> 
+<a class="jxr_linenumber" name="173" href="#173">173</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="174" href="#174">174</a>         Get get = <strong class="jxr_keyword">new</strong> Get(row);
+<a class="jxr_linenumber" name="175" href="#175">175</a>         get.addColumn(family, qualifier);
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>         Result getResult = table.get(t2, get);
+<a class="jxr_linenumber" name="178" href="#178">178</a>         assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Shadow cell should not be there"</span>);
+<a class="jxr_linenumber" name="179" href="#179">179</a>         verify(commitTableClient, times(1)).getCommitTimestamp(anyLong());
+<a class="jxr_linenumber" name="180" href="#180">180</a>     }
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="183" href="#183">183</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellIsHealedAfterCommitCrash(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="184" href="#184">184</a> 
+<a class="jxr_linenumber" name="185" href="#185">185</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
+<a class="jxr_linenumber" name="186" href="#186">186</a> 
+<a class="jxr_linenumber" name="187" href="#187">187</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="188" href="#188">188</a>         hbaseOmidClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="189" href="#189">189</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="190" href="#190">190</a>         PostCommitActions syncPostCommitter = spy(
+<a class="jxr_linenumber" name="191" href="#191">191</a>                 <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
+<a class="jxr_linenumber" name="192" href="#192">192</a>         AbstractTransactionManager tm = spy((AbstractTransactionManager) HBaseTransactionManager.builder(hbaseOmidClientConf)
+<a class="jxr_linenumber" name="193" href="#193">193</a>                 .postCommitter(syncPostCommitter)
+<a class="jxr_linenumber" name="194" href="#194">194</a>                 .commitTableClient(commitTableClient)
+<a class="jxr_linenumber" name="195" href="#195">195</a>                 .build());
+<a class="jxr_linenumber" name="196" href="#196">196</a> 
+<a class="jxr_linenumber" name="197" href="#197">197</a>         <em class="jxr_comment">// The following line emulates a crash after commit that is observed in (*) below</em>
+<a class="jxr_linenumber" name="198" href="#198">198</a>         doThrow(<strong class="jxr_keyword">new</strong> RuntimeException()).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="199" href="#199">199</a> 
+<a class="jxr_linenumber" name="200" href="#200">200</a>         TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>         HBaseTransaction t1 = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>         <em class="jxr_comment">// Test shadow cell are created properly</em>
+<a class="jxr_linenumber" name="205" href="#205">205</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="206" href="#206">206</a>         put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="207" href="#207">207</a>         table.put(t1, put);
+<a class="jxr_linenumber" name="208" href="#208">208</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="209" href="#209">209</a>             tm.commit(t1);
+<a class="jxr_linenumber" name="210" href="#210">210</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) { <em class="jxr_comment">// (*) Crash</em>
+<a class="jxr_linenumber" name="211" href="#211">211</a>             <em class="jxr_comment">// Do nothing</em>
+<a class="jxr_linenumber" name="212" href="#212">212</a>         }
+<a class="jxr_linenumber" name="213" href="#213">213</a> 
+<a class="jxr_linenumber" name="214" href="#214">214</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="215" href="#215">215</a>                 <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="216" href="#216">216</a>         assertFalse(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="217" href="#217">217</a>                 <span class="jxr_string">"Shadow cell should not be there"</span>);
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>         Transaction t2 = tm.begin();
+<a class="jxr_linenumber" name="220" href="#220">220</a>         Get get = <strong class="jxr_keyword">new</strong> Get(row);
+<a class="jxr_linenumber" name="221" href="#221">221</a>         get.addColumn(family, qualifier);
+<a class="jxr_linenumber" name="222" href="#222">222</a> 
+<a class="jxr_linenumber" name="223" href="#223">223</a>         <em class="jxr_comment">// This get should heal the shadow cell</em>
+<a class="jxr_linenumber" name="224" href="#224">224</a>         Result getResult = table.get(t2, get);
+<a class="jxr_linenumber" name="225" href="#225">225</a>         assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Values should be the same"</span>);
+<a class="jxr_linenumber" name="226" href="#226">226</a>         verify(commitTableClient, times(1)).getCommitTimestamp(anyLong());
+<a class="jxr_linenumber" name="227" href="#227">227</a> 
+<a class="jxr_linenumber" name="228" href="#228">228</a>         assertTrue(hasCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="229" href="#229">229</a>                 <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="230" href="#230">230</a>         assertTrue(hasShadowCell(row, family, qualifier, t1.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="231" href="#231">231</a>                 <span class="jxr_string">"Shadow cell should be there after being healed"</span>);
+<a class="jxr_linenumber" name="232" href="#232">232</a> 
+<a class="jxr_linenumber" name="233" href="#233">233</a>         <em class="jxr_comment">// As the shadow cell is healed, this get shouldn't have to hit the storage,</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a>         <em class="jxr_comment">// so the number of invocations to commitTableClient.getCommitTimestamp()</em>
+<a class="jxr_linenumber" name="235" href="#235">235</a>         <em class="jxr_comment">// should remain the same</em>
+<a class="jxr_linenumber" name="236" href="#236">236</a>         getResult = table.get(t2, get);
+<a class="jxr_linenumber" name="237" href="#237">237</a>         assertTrue(Arrays.equals(data1, getResult.getValue(family, qualifier)), <span class="jxr_string">"Values should be the same"</span>);
+<a class="jxr_linenumber" name="238" href="#238">238</a>         verify(commitTableClient, times(1)).getCommitTimestamp(anyLong());
+<a class="jxr_linenumber" name="239" href="#239">239</a>     }
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTransactionNeverCompletesWhenAnExceptionIsThrownUpdatingShadowCells(ITestContext context)
+<a class="jxr_linenumber" name="243" href="#243">243</a>             <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="244" href="#244">244</a> 
+<a class="jxr_linenumber" name="245" href="#245">245</a>         CommitTable.Client commitTableClient = spy(getCommitTable(context).getClient());
+<a class="jxr_linenumber" name="246" href="#246">246</a> 
+<a class="jxr_linenumber" name="247" href="#247">247</a>         HBaseOmidClientConfiguration hbaseOmidClientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="248" href="#248">248</a>         hbaseOmidClientConf.setConnectionString(TSO_SERVER_HOST + <span class="jxr_string">":"</span> + TSO_SERVER_PORT);
+<a class="jxr_linenumber" name="249" href="#249">249</a>         hbaseOmidClientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="250" href="#250">250</a>         PostCommitActions syncPostCommitter = spy(
+<a class="jxr_linenumber" name="251" href="#251">251</a>                 <strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), commitTableClient));
+<a class="jxr_linenumber" name="252" href="#252">252</a>         AbstractTransactionManager tm = spy((AbstractTransactionManager) HBaseTransactionManager.builder(hbaseOmidClientConf)
+<a class="jxr_linenumber" name="253" href="#253">253</a>                 .postCommitter(syncPostCommitter)
+<a class="jxr_linenumber" name="254" href="#254">254</a>                 .commitTableClient(commitTableClient)
+<a class="jxr_linenumber" name="255" href="#255">255</a>                 .build());
+<a class="jxr_linenumber" name="256" href="#256">256</a> 
+<a class="jxr_linenumber" name="257" href="#257">257</a>         <strong class="jxr_keyword">final</strong> TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="258" href="#258">258</a> 
+<a class="jxr_linenumber" name="259" href="#259">259</a>         HBaseTransaction tx = (HBaseTransaction) tm.begin();
+<a class="jxr_linenumber" name="260" href="#260">260</a> 
+<a class="jxr_linenumber" name="261" href="#261">261</a>         Put put = <strong class="jxr_keyword">new</strong> Put(row);
+<a class="jxr_linenumber" name="262" href="#262">262</a>         put.addColumn(family, qualifier, data1);
+<a class="jxr_linenumber" name="263" href="#263">263</a>         table.put(tx, put);
+<a class="jxr_linenumber" name="264" href="#264">264</a> 
+<a class="jxr_linenumber" name="265" href="#265">265</a>         <em class="jxr_comment">// This line emulates an error accessing the target table by disabling it</em>
+<a class="jxr_linenumber" name="266" href="#266">266</a>         doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;ListenableFuture&lt;Void&gt;&gt;() {
+<a class="jxr_linenumber" name="267" href="#267">267</a>             @Override
+<a class="jxr_linenumber" name="268" href="#268">268</a>             <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; answer(InvocationOnMock invocation) <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="269" href="#269">269</a>                 table.flushCommits();
+<a class="jxr_linenumber" name="270" href="#270">270</a>                 HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
+<a class="jxr_linenumber" name="271" href="#271">271</a>                 admin.disableTable(TableName.valueOf(table.getTableName()));
+<a class="jxr_linenumber" name="272" href="#272">272</a>                 <strong class="jxr_keyword">return</strong> (ListenableFuture&lt;Void&gt;) invocation.callRealMethod();
+<a class="jxr_linenumber" name="273" href="#273">273</a>             }
+<a class="jxr_linenumber" name="274" href="#274">274</a>         }).when(syncPostCommitter).updateShadowCells(any(HBaseTransaction.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="275" href="#275">275</a> 
+<a class="jxr_linenumber" name="276" href="#276">276</a>         <em class="jxr_comment">// When committing, an IOException should be thrown in syncPostCommitter.updateShadowCells() and placed in the</em>
+<a class="jxr_linenumber" name="277" href="#277">277</a>         <em class="jxr_comment">// future as a TransactionManagerException. However, the exception is never retrieved in the</em>
+<a class="jxr_linenumber" name="278" href="#278">278</a>         <em class="jxr_comment">// AbstractTransactionManager as the future is never checked.</em>
+<a class="jxr_linenumber" name="279" href="#279">279</a>         <em class="jxr_comment">// This requires to set the HConstants.HBASE_CLIENT_RETRIES_NUMBER in the HBase config to a finite number:</em>
+<a class="jxr_linenumber" name="280" href="#280">280</a>         <em class="jxr_comment">// e.g -&gt; hbaseConf.setInt(HBASE_CLIENT_RETRIES_NUMBER, 3); Otherwise it will get stuck in tm.commit();</em>
+<a class="jxr_linenumber" name="281" href="#281">281</a> 
+<a class="jxr_linenumber" name="282" href="#282">282</a>         tm.commit(tx); <em class="jxr_comment">// Tx effectively commits but the post Commit Actions failed when updating the shadow cells</em>
+<a class="jxr_linenumber" name="283" href="#283">283</a> 
+<a class="jxr_linenumber" name="284" href="#284">284</a>         <em class="jxr_comment">// Re-enable table to allow the required checks below</em>
+<a class="jxr_linenumber" name="285" href="#285">285</a>         HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
+<a class="jxr_linenumber" name="286" href="#286">286</a>         admin.enableTable(TableName.valueOf(table.getTableName()));
+<a class="jxr_linenumber" name="287" href="#287">287</a> 
+<a class="jxr_linenumber" name="288" href="#288">288</a>         <em class="jxr_comment">// 1) check that shadow cell is not created...</em>
+<a class="jxr_linenumber" name="289" href="#289">289</a>         assertTrue(hasCell(row, family, qualifier, tx.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="290" href="#290">290</a>                 <span class="jxr_string">"Cell should be there"</span>);
+<a class="jxr_linenumber" name="291" href="#291">291</a>         assertFalse(hasShadowCell(row, family, qualifier, tx.getStartTimestamp(), <strong class="jxr_keyword">new</strong> TTableCellGetterAdapter(table)),
+<a class="jxr_linenumber" name="292" href="#292">292</a>                 <span class="jxr_string">"Shadow cell should not be there"</span>);
+<a class="jxr_linenumber" name="293" href="#293">293</a>         <em class="jxr_comment">// 2) and thus, completeTransaction() was never called on the commit table...</em>
+<a class="jxr_linenumber" name="294" href="#294">294</a>         verify(commitTableClient, times(0)).completeTransaction(anyLong());
+<a class="jxr_linenumber" name="295" href="#295">295</a>         <em class="jxr_comment">// 3) ...and commit value still in commit table</em>
+<a class="jxr_linenumber" name="296" href="#296">296</a>         assertTrue(commitTableClient.getCommitTimestamp(tx.getStartTimestamp()).get().isPresent());
+<a class="jxr_linenumber" name="297" href="#297">297</a> 
+<a class="jxr_linenumber" name="298" href="#298">298</a>     }
+<a class="jxr_linenumber" name="299" href="#299">299</a> 
+<a class="jxr_linenumber" name="300" href="#300">300</a>     @Test(timeOut = 60_000)
+<a class="jxr_linenumber" name="301" href="#301">301</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRaceConditionBetweenReaderAndWriterThreads(<strong class="jxr_keyword">final</strong> ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="302" href="#302">302</a>         <strong class="jxr_keyword">final</strong> CountDownLatch readAfterCommit = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="303" href="#303">303</a>         <strong class="jxr_keyword">final</strong> CountDownLatch postCommitBegin = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="304" href="#304">304</a>         <strong class="jxr_keyword">final</strong> CountDownLatch postCommitEnd = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="305" href="#305">305</a> 
+<a class="jxr_linenumber" name="306" href="#306">306</a>         <strong class="jxr_keyword">final</strong> AtomicBoolean readFailed = <strong class="jxr_keyword">new</strong> AtomicBoolean(false);
+<a class="jxr_linenumber" name="307" href="#307">307</a>         PostCommitActions syncPostCommitter =
+<a class="jxr_linenumber" name="308" href="#308">308</a>                 spy(<strong class="jxr_keyword">new</strong> HBaseSyncPostCommitter(<strong class="jxr_keyword">new</strong> NullMetricsProvider(), getCommitTable(context).getClient()));
+<a class="jxr_linenumber" name="309" href="#309">309</a>         AbstractTransactionManager tm = (AbstractTransactionManager) newTransactionManager(context, syncPostCommitter);
+<a class="jxr_linenumber" name="310" href="#310">310</a> 
+<a class="jxr_linenumber" name="311" href="#311">311</a>         doAnswer(<strong class="jxr_keyword">new</strong> Answer&lt;ListenableFuture&lt;Void&gt;&gt;() {
+<a class="jxr_linenumber" name="312" href="#312">312</a>             @Override
+<a class="jxr_linenumber" name="313" href="#313

<TRUNCATED>


[11/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/CompactorUtil.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/CompactorUtil.html b/xref/org/apache/omid/transaction/CompactorUtil.html
index 71c2dda..4c4a893 100644
--- a/xref/org/apache/omid/transaction/CompactorUtil.html
+++ b/xref/org/apache/omid/transaction/CompactorUtil.html
@@ -30,91 +30,84 @@
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.JCommander;
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.Parameter;
 <a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.beust.jcommander.ParametersDelegate;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.HBaseLogin;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.SecureHBaseConfig;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.HBaseShims;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.HBaseLogin;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.SecureHBaseConfig;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
 <a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CompactorUtil.html">CompactorUtil</a> {
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> enableOmidCompaction(Configuration conf,
-<a class="jxr_linenumber" name="38" href="#38">38</a>                                              TableName table, byte[] columnFamily) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="39" href="#39">39</a>          HBaseAdmin admin = <strong class="jxr_keyword">new</strong> HBaseAdmin(conf);
-<a class="jxr_linenumber" name="40" href="#40">40</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="41" href="#41">41</a>              HTableDescriptor desc = admin.getTableDescriptor(table);
-<a class="jxr_linenumber" name="42" href="#42">42</a>              HColumnDescriptor cfDesc = desc.getFamily(columnFamily);
-<a class="jxr_linenumber" name="43" href="#43">43</a>              cfDesc.setValue(OmidCompactor.OMID_COMPACTABLE_CF_FLAG,
-<a class="jxr_linenumber" name="44" href="#44">44</a>                      Boolean.TRUE.toString());
-<a class="jxr_linenumber" name="45" href="#45">45</a>              admin.modifyColumn(table, cfDesc);
-<a class="jxr_linenumber" name="46" href="#46">46</a>          } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="47" href="#47">47</a>              admin.close();
-<a class="jxr_linenumber" name="48" href="#48">48</a>          }
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CompactorUtil.html">CompactorUtil</a> {
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> setOmidCompaction(Connection conn, TableName table, byte[] columnFamily, String value)
+<a class="jxr_linenumber" name="41" href="#41">41</a>              <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="42" href="#42">42</a>          HBaseShims.setCompaction(conn, table, columnFamily, OmidCompactor.OMID_COMPACTABLE_CF_FLAG, value);
+<a class="jxr_linenumber" name="43" href="#43">43</a>      }
+<a class="jxr_linenumber" name="44" href="#44">44</a>  
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> enableOmidCompaction(Connection conn,
+<a class="jxr_linenumber" name="46" href="#46">46</a>                                              TableName table, byte[] columnFamily) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>          setOmidCompaction(conn, table, columnFamily, Boolean.TRUE.toString());
 <a class="jxr_linenumber" name="49" href="#49">49</a>      }
 <a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> disableOmidCompaction(Configuration conf,
+<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> disableOmidCompaction(Connection conn,
 <a class="jxr_linenumber" name="52" href="#52">52</a>                                               TableName table, byte[] columnFamily) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="53" href="#53">53</a>          HBaseAdmin admin = <strong class="jxr_keyword">new</strong> HBaseAdmin(conf);
-<a class="jxr_linenumber" name="54" href="#54">54</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="55" href="#55">55</a>              HTableDescriptor desc = admin.getTableDescriptor(table);
-<a class="jxr_linenumber" name="56" href="#56">56</a>              HColumnDescriptor cfDesc = desc.getFamily(columnFamily);
-<a class="jxr_linenumber" name="57" href="#57">57</a>              cfDesc.setValue(OmidCompactor.OMID_COMPACTABLE_CF_FLAG,
-<a class="jxr_linenumber" name="58" href="#58">58</a>                      Boolean.FALSE.toString());
-<a class="jxr_linenumber" name="59" href="#59">59</a>              admin.modifyColumn(table, cfDesc);
-<a class="jxr_linenumber" name="60" href="#60">60</a>          } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="61" href="#61">61</a>              admin.close();
-<a class="jxr_linenumber" name="62" href="#62">62</a>          }
-<a class="jxr_linenumber" name="63" href="#63">63</a>      }
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CompactorUtil.html">Config</a> {
-<a class="jxr_linenumber" name="66" href="#66">66</a>          @Parameter(names = <span class="jxr_string">"-table"</span>, required = <strong class="jxr_keyword">true</strong>)
-<a class="jxr_linenumber" name="67" href="#67">67</a>          String table;
+<a class="jxr_linenumber" name="53" href="#53">53</a>          setOmidCompaction(conn, table, columnFamily, Boolean.FALSE.toString());
+<a class="jxr_linenumber" name="54" href="#54">54</a>      }
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/CompactorUtil.html">Config</a> {
+<a class="jxr_linenumber" name="57" href="#57">57</a>          @Parameter(names = <span class="jxr_string">"-table"</span>, required = <strong class="jxr_keyword">true</strong>)
+<a class="jxr_linenumber" name="58" href="#58">58</a>          String table;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>          @Parameter(names = <span class="jxr_string">"-columnFamily"</span>, required = false)
+<a class="jxr_linenumber" name="61" href="#61">61</a>          String columnFamily;
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>          @Parameter(names = <span class="jxr_string">"-help"</span>)
+<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">boolean</strong> help = false;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>          @Parameter(names = <span class="jxr_string">"-enable"</span>)
+<a class="jxr_linenumber" name="67" href="#67">67</a>          <strong class="jxr_keyword">boolean</strong> enable = false;
 <a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>          @Parameter(names = <span class="jxr_string">"-columnFamily"</span>, required = false)
-<a class="jxr_linenumber" name="70" href="#70">70</a>          String columnFamily;
+<a class="jxr_linenumber" name="69" href="#69">69</a>          @Parameter(names = <span class="jxr_string">"-disable"</span>)
+<a class="jxr_linenumber" name="70" href="#70">70</a>          <strong class="jxr_keyword">boolean</strong> disable = false;
 <a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>          @Parameter(names = <span class="jxr_string">"-help"</span>)
-<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">boolean</strong> help = false;
+<a class="jxr_linenumber" name="72" href="#72">72</a>          @ParametersDelegate
+<a class="jxr_linenumber" name="73" href="#73">73</a>          <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a> loginFlags = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a>();
 <a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>          @Parameter(names = <span class="jxr_string">"-enable"</span>)
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">boolean</strong> enable = false;
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>          @Parameter(names = <span class="jxr_string">"-disable"</span>)
-<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">boolean</strong> disable = false;
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>          @ParametersDelegate
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a> loginFlags = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a>();
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>      }
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="87" href="#87">87</a>          <a href="../../../../org/apache/omid/transaction/CompactorUtil.html">Config</a> cmdline = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/CompactorUtil.html">Config</a>();
-<a class="jxr_linenumber" name="88" href="#88">88</a>          JCommander jcommander = <strong class="jxr_keyword">new</strong> JCommander(cmdline, args);
-<a class="jxr_linenumber" name="89" href="#89">89</a>          <strong class="jxr_keyword">if</strong> (cmdline.help) {
-<a class="jxr_linenumber" name="90" href="#90">90</a>              jcommander.usage(<span class="jxr_string">"CompactorUtil"</span>);
-<a class="jxr_linenumber" name="91" href="#91">91</a>              System.exit(1);
-<a class="jxr_linenumber" name="92" href="#92">92</a>          }
-<a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>          HBaseLogin.loginIfNeeded(cmdline.loginFlags);
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          Configuration conf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="97" href="#97">97</a>          <strong class="jxr_keyword">if</strong> (cmdline.enable) {
-<a class="jxr_linenumber" name="98" href="#98">98</a>              enableOmidCompaction(conf, TableName.valueOf(cmdline.table),
-<a class="jxr_linenumber" name="99" href="#99">99</a>                      Bytes.toBytes(cmdline.columnFamily));
-<a class="jxr_linenumber" name="100" href="#100">100</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cmdline.disable) {
-<a class="jxr_linenumber" name="101" href="#101">101</a>             disableOmidCompaction(conf, TableName.valueOf(cmdline.table),
-<a class="jxr_linenumber" name="102" href="#102">102</a>                     Bytes.toBytes(cmdline.columnFamily));
-<a class="jxr_linenumber" name="103" href="#103">103</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="104" href="#104">104</a>             System.err.println(<span class="jxr_string">"Must specify enable or disable"</span>);
-<a class="jxr_linenumber" name="105" href="#105">105</a>         }
-<a class="jxr_linenumber" name="106" href="#106">106</a>     }
-<a class="jxr_linenumber" name="107" href="#107">107</a> }
+<a class="jxr_linenumber" name="75" href="#75">75</a>      }
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="78" href="#78">78</a>          <a href="../../../../org/apache/omid/transaction/CompactorUtil.html">Config</a> cmdline = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/CompactorUtil.html">Config</a>();
+<a class="jxr_linenumber" name="79" href="#79">79</a>          JCommander jcommander = <strong class="jxr_keyword">new</strong> JCommander(cmdline, args);
+<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">if</strong> (cmdline.help) {
+<a class="jxr_linenumber" name="81" href="#81">81</a>              jcommander.usage(<span class="jxr_string">"CompactorUtil"</span>);
+<a class="jxr_linenumber" name="82" href="#82">82</a>              System.exit(1);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          }
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>          HBaseLogin.loginIfNeeded(cmdline.loginFlags);
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>          Configuration conf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="88" href="#88">88</a>          Connection conn = ConnectionFactory.createConnection(conf);
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>          <strong class="jxr_keyword">if</strong> (cmdline.enable) {
+<a class="jxr_linenumber" name="91" href="#91">91</a>              enableOmidCompaction(conn, TableName.valueOf(cmdline.table),
+<a class="jxr_linenumber" name="92" href="#92">92</a>                      Bytes.toBytes(cmdline.columnFamily));
+<a class="jxr_linenumber" name="93" href="#93">93</a>          } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cmdline.disable) {
+<a class="jxr_linenumber" name="94" href="#94">94</a>              disableOmidCompaction(conn, TableName.valueOf(cmdline.table),
+<a class="jxr_linenumber" name="95" href="#95">95</a>                      Bytes.toBytes(cmdline.columnFamily));
+<a class="jxr_linenumber" name="96" href="#96">96</a>          } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="97" href="#97">97</a>              System.err.println(<span class="jxr_string">"Must specify enable or disable"</span>);
+<a class="jxr_linenumber" name="98" href="#98">98</a>          }
+<a class="jxr_linenumber" name="99" href="#99">99</a>      }
+<a class="jxr_linenumber" name="100" href="#100">100</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/HBaseCellId.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/HBaseCellId.html b/xref/org/apache/omid/transaction/HBaseCellId.html
index 6b35fdb..a106ad2 100644
--- a/xref/org/apache/omid/transaction/HBaseCellId.html
+++ b/xref/org/apache/omid/transaction/HBaseCellId.html
@@ -27,67 +27,87 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.hash.Hashing;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTableInterface;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> com.google.common.base.Charsets.UTF_8;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
 <a class="jxr_linenumber" name="23" href="#23">23</a>  
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> com.google.common.base.Charsets.UTF_8;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/tso/client/CellId.html">CellId</a> {
-<a class="jxr_linenumber" name="27" href="#27">27</a>  
-<a class="jxr_linenumber" name="28" href="#28">28</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> HTableInterface table;
-<a class="jxr_linenumber" name="29" href="#29">29</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] row;
-<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] family;
-<a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier;
-<a class="jxr_linenumber" name="32" href="#32">32</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> timestamp;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(HTableInterface table, byte[] row, byte[] family, byte[] qualifier, <strong class="jxr_keyword">long</strong> timestamp) {
-<a class="jxr_linenumber" name="35" href="#35">35</a>          <strong class="jxr_keyword">this</strong>.timestamp = timestamp;
-<a class="jxr_linenumber" name="36" href="#36">36</a>          <strong class="jxr_keyword">this</strong>.table = table;
-<a class="jxr_linenumber" name="37" href="#37">37</a>          <strong class="jxr_keyword">this</strong>.row = row;
-<a class="jxr_linenumber" name="38" href="#38">38</a>          <strong class="jxr_keyword">this</strong>.family = family;
-<a class="jxr_linenumber" name="39" href="#39">39</a>          <strong class="jxr_keyword">this</strong>.qualifier = qualifier;
-<a class="jxr_linenumber" name="40" href="#40">40</a>      }
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> HTableInterface getTable() {
-<a class="jxr_linenumber" name="43" href="#43">43</a>          <strong class="jxr_keyword">return</strong> table;
-<a class="jxr_linenumber" name="44" href="#44">44</a>      }
-<a class="jxr_linenumber" name="45" href="#45">45</a>  
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">public</strong> byte[] getRow() {
-<a class="jxr_linenumber" name="47" href="#47">47</a>          <strong class="jxr_keyword">return</strong> row;
-<a class="jxr_linenumber" name="48" href="#48">48</a>      }
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">public</strong> byte[] getFamily() {
-<a class="jxr_linenumber" name="51" href="#51">51</a>          <strong class="jxr_keyword">return</strong> family;
-<a class="jxr_linenumber" name="52" href="#52">52</a>      }
-<a class="jxr_linenumber" name="53" href="#53">53</a>  
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">public</strong> byte[] getQualifier() {
-<a class="jxr_linenumber" name="55" href="#55">55</a>          <strong class="jxr_keyword">return</strong> qualifier;
-<a class="jxr_linenumber" name="56" href="#56">56</a>      }
-<a class="jxr_linenumber" name="57" href="#57">57</a>  
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getTimestamp() {
-<a class="jxr_linenumber" name="59" href="#59">59</a>          <strong class="jxr_keyword">return</strong> timestamp;
-<a class="jxr_linenumber" name="60" href="#60">60</a>      }
-<a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> String(table.getTableName(), UTF_8)
-<a class="jxr_linenumber" name="64" href="#64">64</a>                  + <span class="jxr_string">":"</span> + <strong class="jxr_keyword">new</strong> String(row, UTF_8)
-<a class="jxr_linenumber" name="65" href="#65">65</a>                  + <span class="jxr_string">":"</span> + <strong class="jxr_keyword">new</strong> String(family, UTF_8)
-<a class="jxr_linenumber" name="66" href="#66">66</a>                  + <span class="jxr_string">":"</span> + <strong class="jxr_keyword">new</strong> String(qualifier, UTF_8)
-<a class="jxr_linenumber" name="67" href="#67">67</a>                  + <span class="jxr_string">":"</span> + timestamp;
-<a class="jxr_linenumber" name="68" href="#68">68</a>      }
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>      @Override
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getCellId() {
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">return</strong> Hashing.murmur3_128().newHasher()
-<a class="jxr_linenumber" name="73" href="#73">73</a>                  .putBytes(table.getTableName())
-<a class="jxr_linenumber" name="74" href="#74">74</a>                  .putBytes(row)
-<a class="jxr_linenumber" name="75" href="#75">75</a>                  .putBytes(family)
-<a class="jxr_linenumber" name="76" href="#76">76</a>                  .putBytes(qualifier)
-<a class="jxr_linenumber" name="77" href="#77">77</a>                  .hash().asLong();
-<a class="jxr_linenumber" name="78" href="#78">78</a>      }
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>  }
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.google.common.hash.Hasher;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.google.common.hash.Hashing;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/tso/client/CellId.html">CellId</a> {
+<a class="jxr_linenumber" name="28" href="#28">28</a>  
+<a class="jxr_linenumber" name="29" href="#29">29</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> table;
+<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] row;
+<a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] family;
+<a class="jxr_linenumber" name="32" href="#32">32</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier;
+<a class="jxr_linenumber" name="33" href="#33">33</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> timestamp;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseCellId.html">HBaseCellId</a>(<a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> table, byte[] row, byte[] family, byte[] qualifier, <strong class="jxr_keyword">long</strong> timestamp) {
+<a class="jxr_linenumber" name="36" href="#36">36</a>          <strong class="jxr_keyword">this</strong>.timestamp = timestamp;
+<a class="jxr_linenumber" name="37" href="#37">37</a>          <strong class="jxr_keyword">this</strong>.table = table;
+<a class="jxr_linenumber" name="38" href="#38">38</a>          <strong class="jxr_keyword">this</strong>.row = row;
+<a class="jxr_linenumber" name="39" href="#39">39</a>          <strong class="jxr_keyword">this</strong>.family = family;
+<a class="jxr_linenumber" name="40" href="#40">40</a>          <strong class="jxr_keyword">this</strong>.qualifier = qualifier;
+<a class="jxr_linenumber" name="41" href="#41">41</a>      }
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/TTable.html">TTable</a> getTable() {
+<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">return</strong> table;
+<a class="jxr_linenumber" name="45" href="#45">45</a>      }
+<a class="jxr_linenumber" name="46" href="#46">46</a>  
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">public</strong> byte[] getRow() {
+<a class="jxr_linenumber" name="48" href="#48">48</a>          <strong class="jxr_keyword">return</strong> row;
+<a class="jxr_linenumber" name="49" href="#49">49</a>      }
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">public</strong> byte[] getFamily() {
+<a class="jxr_linenumber" name="52" href="#52">52</a>          <strong class="jxr_keyword">return</strong> family;
+<a class="jxr_linenumber" name="53" href="#53">53</a>      }
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">public</strong> byte[] getQualifier() {
+<a class="jxr_linenumber" name="56" href="#56">56</a>          <strong class="jxr_keyword">return</strong> qualifier;
+<a class="jxr_linenumber" name="57" href="#57">57</a>      }
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getTimestamp() {
+<a class="jxr_linenumber" name="60" href="#60">60</a>          <strong class="jxr_keyword">return</strong> timestamp;
+<a class="jxr_linenumber" name="61" href="#61">61</a>      }
+<a class="jxr_linenumber" name="62" href="#62">62</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>      @Override
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">public</strong> String toString() {
+<a class="jxr_linenumber" name="65" href="#65">65</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> String(table.getTableName(), UTF_8)
+<a class="jxr_linenumber" name="66" href="#66">66</a>                  + <span class="jxr_string">":"</span> + <strong class="jxr_keyword">new</strong> String(row, UTF_8)
+<a class="jxr_linenumber" name="67" href="#67">67</a>                  + <span class="jxr_string">":"</span> + <strong class="jxr_keyword">new</strong> String(family, UTF_8)
+<a class="jxr_linenumber" name="68" href="#68">68</a>                  + <span class="jxr_string">":"</span> + <strong class="jxr_keyword">new</strong> String(qualifier, UTF_8)
+<a class="jxr_linenumber" name="69" href="#69">69</a>                  + <span class="jxr_string">":"</span> + timestamp;
+<a class="jxr_linenumber" name="70" href="#70">70</a>      }
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      @Override
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getCellId() {
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <strong class="jxr_keyword">return</strong> getHasher()
+<a class="jxr_linenumber" name="75" href="#75">75</a>                  .putBytes(table.getTableName())
+<a class="jxr_linenumber" name="76" href="#76">76</a>                  .putBytes(row)
+<a class="jxr_linenumber" name="77" href="#77">77</a>                  .putBytes(family)
+<a class="jxr_linenumber" name="78" href="#78">78</a>                  .putBytes(qualifier)
+<a class="jxr_linenumber" name="79" href="#79">79</a>                  .hash().asLong();
+<a class="jxr_linenumber" name="80" href="#80">80</a>      }
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>      @Override
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getTableId() {
+<a class="jxr_linenumber" name="84" href="#84">84</a>          <strong class="jxr_keyword">return</strong> getHasher()
+<a class="jxr_linenumber" name="85" href="#85">85</a>                  .putBytes(table.getTableName())
+<a class="jxr_linenumber" name="86" href="#86">86</a>                  .hash().asLong();
+<a class="jxr_linenumber" name="87" href="#87">87</a>      }
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>      @Override
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getRowId() {
+<a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">return</strong> getHasher()
+<a class="jxr_linenumber" name="92" href="#92">92</a>                  .putBytes(table.getTableName())
+<a class="jxr_linenumber" name="93" href="#93">93</a>                  .putBytes(row)
+<a class="jxr_linenumber" name="94" href="#94">94</a>                  .hash().asLong();
+<a class="jxr_linenumber" name="95" href="#95">95</a>      }
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Hasher getHasher() {
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <strong class="jxr_keyword">return</strong> Hashing.murmur3_128().newHasher();
+<a class="jxr_linenumber" name="99" href="#99">99</a>      }
+<a class="jxr_linenumber" name="100" href="#100">100</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/HBaseOmidClientConfiguration.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/HBaseOmidClientConfiguration.html b/xref/org/apache/omid/transaction/HBaseOmidClientConfiguration.html
index e71ed49..128e58d 100644
--- a/xref/org/apache/omid/transaction/HBaseOmidClientConfiguration.html
+++ b/xref/org/apache/omid/transaction/HBaseOmidClientConfiguration.html
@@ -30,171 +30,164 @@
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.annotations.VisibleForTesting;
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Inject;
 <a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.inject.name.Named;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.beanutils.BeanUtils;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.YAMLUtils;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.SecureHBaseConfig;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.YAMLUtils;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.SecureHBaseConfig;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration.ConflictDetectionLevel;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration.PostCommitMode;
 <a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration.PostCommitMode;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.lang.reflect.InvocationTargetException;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * Configuration for HBase's Omid client side</em>
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a> {
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DEFAULT_CONFIG_FILE_NAME = <span class="jxr_string">"default-hbase-omid-client-config.yml"</span>;
-<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CONFIG_FILE_NAME = <span class="jxr_string">"hbase-omid-client-config.yml"</span>;
-<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> Configuration hbaseConfiguration = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> String commitTableName;
-<a class="jxr_linenumber" name="44" href="#44">44</a>      @Inject
-<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">OmidClientConfiguration</a> omidClientConfiguration;
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * Configuration for HBase's Omid client side</em>
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/tools/hbase/SecureHBaseConfig.html">SecureHBaseConfig</a> {
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DEFAULT_CONFIG_FILE_NAME = <span class="jxr_string">"default-hbase-omid-client-config.yml"</span>;
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CONFIG_FILE_NAME = <span class="jxr_string">"hbase-omid-client-config.yml"</span>;
+<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> Configuration hbaseConfiguration = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> String commitTableName;
+<a class="jxr_linenumber" name="42" href="#42">42</a>      @Inject
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">OmidClientConfiguration</a> omidClientConfiguration;
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <em class="jxr_comment">// Instantiation</em>
 <a class="jxr_linenumber" name="48" href="#48">48</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <em class="jxr_comment">// Instantiation</em>
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>      
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a> loadFromString(String yamlContent) {
-<a class="jxr_linenumber" name="53" href="#53">53</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/YAMLUtils.html">YAMLUtils</a>().loadStringAsMap(yamlContent));
-<a class="jxr_linenumber" name="54" href="#54">54</a>      }
-<a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>() {
-<a class="jxr_linenumber" name="57" href="#57">57</a>          <strong class="jxr_keyword">this</strong>(CONFIG_FILE_NAME);
-<a class="jxr_linenumber" name="58" href="#58">58</a>      }
-<a class="jxr_linenumber" name="59" href="#59">59</a>  
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> &lt;K, V&gt; <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>(Map&lt;K, V&gt; properties) {
-<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="62" href="#62">62</a>              BeanUtils.populate(<strong class="jxr_keyword">this</strong>, properties);
-<a class="jxr_linenumber" name="63" href="#63">63</a>          } <strong class="jxr_keyword">catch</strong> (IllegalAccessException | InvocationTargetException e) {
-<a class="jxr_linenumber" name="64" href="#64">64</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(e);
-<a class="jxr_linenumber" name="65" href="#65">65</a>          }
-<a class="jxr_linenumber" name="66" href="#66">66</a>      }
-<a class="jxr_linenumber" name="67" href="#67">67</a>  
-<a class="jxr_linenumber" name="68" href="#68">68</a>      @VisibleForTesting
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>(String configFileName) {
-<a class="jxr_linenumber" name="70" href="#70">70</a>          <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/YAMLUtils.html">YAMLUtils</a>().loadSettings(configFileName, DEFAULT_CONFIG_FILE_NAME, <strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="71" href="#71">71</a>      }
-<a class="jxr_linenumber" name="72" href="#72">72</a>  
-<a class="jxr_linenumber" name="73" href="#73">73</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="74" href="#74">74</a>      <em class="jxr_comment">// Getters and setters for config params</em>
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="76" href="#76">76</a>  
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> Configuration getHBaseConfiguration() {
-<a class="jxr_linenumber" name="78" href="#78">78</a>          <strong class="jxr_keyword">return</strong> hbaseConfiguration;
-<a class="jxr_linenumber" name="79" href="#79">79</a>      }
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setHBaseConfiguration(Configuration hbaseConfiguration) {
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">this</strong>.hbaseConfiguration = hbaseConfiguration;
-<a class="jxr_linenumber" name="83" href="#83">83</a>      }
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">PostCommitMode</a> getPostCommitMode() {
-<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">return</strong> omidClientConfiguration.getPostCommitMode();
-<a class="jxr_linenumber" name="87" href="#87">87</a>      }
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setPostCommitMode(<a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">PostCommitMode</a> postCommitMode) {
-<a class="jxr_linenumber" name="90" href="#90">90</a>          omidClientConfiguration.setPostCommitMode(postCommitMode);
-<a class="jxr_linenumber" name="91" href="#91">91</a>      }
-<a class="jxr_linenumber" name="92" href="#92">92</a>  
-<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">public</strong> String getCommitTableName() {
-<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">return</strong> commitTableName;
-<a class="jxr_linenumber" name="95" href="#95">95</a>      }
-<a class="jxr_linenumber" name="96" href="#96">96</a>  
-<a class="jxr_linenumber" name="97" href="#97">97</a>      @Inject(optional = <strong class="jxr_keyword">true</strong>)
-<a class="jxr_linenumber" name="98" href="#98">98</a>      @Named(<span class="jxr_string">"omid.client.hbase.commitTableName"</span>)
-<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setCommitTableName(String commitTableName) {
-<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">this</strong>.commitTableName = commitTableName;
-<a class="jxr_linenumber" name="101" href="#101">101</a>     }
-<a class="jxr_linenumber" name="102" href="#102">102</a> 
-<a class="jxr_linenumber" name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">OmidClientConfiguration</a> getOmidClientConfiguration() {
-<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration;
-<a class="jxr_linenumber" name="105" href="#105">105</a>     }
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setOmidClientConfiguration(<a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">OmidClientConfiguration</a> omidClientConfiguration) {
-<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">this</strong>.omidClientConfiguration = omidClientConfiguration;
-<a class="jxr_linenumber" name="109" href="#109">109</a>     }
-<a class="jxr_linenumber" name="110" href="#110">110</a> 
-<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> getMetrics() {
-<a class="jxr_linenumber" name="112" href="#112">112</a>         <strong class="jxr_keyword">return</strong> metrics;
-<a class="jxr_linenumber" name="113" href="#113">113</a>     }
-<a class="jxr_linenumber" name="114" href="#114">114</a> 
-<a class="jxr_linenumber" name="115" href="#115">115</a>     @Inject(optional = <strong class="jxr_keyword">true</strong>)
-<a class="jxr_linenumber" name="116" href="#116">116</a>     @Named(<span class="jxr_string">"omid.client.hbase.metrics"</span>)
-<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMetrics(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics) {
-<a class="jxr_linenumber" name="118" href="#118">118</a>         <strong class="jxr_keyword">this</strong>.metrics = metrics;
-<a class="jxr_linenumber" name="119" href="#119">119</a>     }
-<a class="jxr_linenumber" name="120" href="#120">120</a> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>     <em class="jxr_comment">// Delegation to make end-user life better</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">public</strong> OmidClientConfiguration.ConnType getConnectionType() {
-<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getConnectionType();
-<a class="jxr_linenumber" name="125" href="#125">125</a>     }
-<a class="jxr_linenumber" name="126" href="#126">126</a> 
-<a class="jxr_linenumber" name="127" href="#127">127</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setReconnectionDelayInSecs(<strong class="jxr_keyword">int</strong> reconnectionDelayInSecs) {
-<a class="jxr_linenumber" name="128" href="#128">128</a>         omidClientConfiguration.setReconnectionDelayInSecs(reconnectionDelayInSecs);
-<a class="jxr_linenumber" name="129" href="#129">129</a>     }
-<a class="jxr_linenumber" name="130" href="#130">130</a> 
-<a class="jxr_linenumber" name="131" href="#131">131</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setExecutorThreads(<strong class="jxr_keyword">int</strong> executorThreads) {
-<a class="jxr_linenumber" name="132" href="#132">132</a>         omidClientConfiguration.setExecutorThreads(executorThreads);
-<a class="jxr_linenumber" name="133" href="#133">133</a>     }
-<a class="jxr_linenumber" name="134" href="#134">134</a> 
-<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getRequestTimeoutInMs() {
-<a class="jxr_linenumber" name="136" href="#136">136</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getRequestTimeoutInMs();
-<a class="jxr_linenumber" name="137" href="#137">137</a>     }
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setConnectionString(String connectionString) {
-<a class="jxr_linenumber" name="140" href="#140">140</a>         omidClientConfiguration.setConnectionString(connectionString);
-<a class="jxr_linenumber" name="141" href="#141">141</a>     }
-<a class="jxr_linenumber" name="142" href="#142">142</a> 
-<a class="jxr_linenumber" name="143" href="#143">143</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRequestTimeoutInMs(<strong class="jxr_keyword">int</strong> requestTimeoutInMs) {
-<a class="jxr_linenumber" name="144" href="#144">144</a>         omidClientConfiguration.setRequestTimeoutInMs(requestTimeoutInMs);
-<a class="jxr_linenumber" name="145" href="#145">145</a>     }
-<a class="jxr_linenumber" name="146" href="#146">146</a> 
-<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setZkConnectionTimeoutInSecs(<strong class="jxr_keyword">int</strong> zkConnectionTimeoutInSecs) {
-<a class="jxr_linenumber" name="148" href="#148">148</a>         omidClientConfiguration.setZkConnectionTimeoutInSecs(zkConnectionTimeoutInSecs);
-<a class="jxr_linenumber" name="149" href="#149">149</a>     }
-<a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setConnectionType(OmidClientConfiguration.ConnType connectionType) {
-<a class="jxr_linenumber" name="152" href="#152">152</a>         omidClientConfiguration.setConnectionType(connectionType);
-<a class="jxr_linenumber" name="153" href="#153">153</a>     }
-<a class="jxr_linenumber" name="154" href="#154">154</a> 
-<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRequestMaxRetries(<strong class="jxr_keyword">int</strong> requestMaxRetries) {
-<a class="jxr_linenumber" name="156" href="#156">156</a>         omidClientConfiguration.setRequestMaxRetries(requestMaxRetries);
-<a class="jxr_linenumber" name="157" href="#157">157</a>     }
-<a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getZkConnectionTimeoutInSecs() {
-<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getZkConnectionTimeoutInSecs();
-<a class="jxr_linenumber" name="161" href="#161">161</a>     }
-<a class="jxr_linenumber" name="162" href="#162">162</a> 
-<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRetryDelayInMs(<strong class="jxr_keyword">int</strong> retryDelayInMs) {
-<a class="jxr_linenumber" name="164" href="#164">164</a>         omidClientConfiguration.setRetryDelayInMs(retryDelayInMs);
-<a class="jxr_linenumber" name="165" href="#165">165</a>     }
-<a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getExecutorThreads() {
-<a class="jxr_linenumber" name="168" href="#168">168</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getExecutorThreads();
-<a class="jxr_linenumber" name="169" href="#169">169</a>     }
-<a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getRetryDelayInMs() {
-<a class="jxr_linenumber" name="172" href="#172">172</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getRetryDelayInMs();
-<a class="jxr_linenumber" name="173" href="#173">173</a>     }
-<a class="jxr_linenumber" name="174" href="#174">174</a> 
-<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">public</strong> String getConnectionString() {
-<a class="jxr_linenumber" name="176" href="#176">176</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getConnectionString();
-<a class="jxr_linenumber" name="177" href="#177">177</a>     }
-<a class="jxr_linenumber" name="178" href="#178">178</a> 
-<a class="jxr_linenumber" name="179" href="#179">179</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getRequestMaxRetries() {
-<a class="jxr_linenumber" name="180" href="#180">180</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getRequestMaxRetries();
-<a class="jxr_linenumber" name="181" href="#181">181</a>     }
-<a class="jxr_linenumber" name="182" href="#182">182</a> 
-<a class="jxr_linenumber" name="183" href="#183">183</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getReconnectionDelayInSecs() {
-<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getReconnectionDelayInSecs();
-<a class="jxr_linenumber" name="185" href="#185">185</a>     }
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a> }
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>() {
+<a class="jxr_linenumber" name="50" href="#50">50</a>          <strong class="jxr_keyword">this</strong>(CONFIG_FILE_NAME);
+<a class="jxr_linenumber" name="51" href="#51">51</a>      }
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>      @VisibleForTesting
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <a href="../../../../org/apache/omid/transaction/HBaseOmidClientConfiguration.html">HBaseOmidClientConfiguration</a>(String configFileName) {
+<a class="jxr_linenumber" name="55" href="#55">55</a>          <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/YAMLUtils.html">YAMLUtils</a>().loadSettings(configFileName, DEFAULT_CONFIG_FILE_NAME, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="56" href="#56">56</a>      }
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <em class="jxr_comment">// Getters and setters for config params</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">public</strong> Configuration getHBaseConfiguration() {
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">return</strong> hbaseConfiguration;
+<a class="jxr_linenumber" name="64" href="#64">64</a>      }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setHBaseConfiguration(Configuration hbaseConfiguration) {
+<a class="jxr_linenumber" name="67" href="#67">67</a>          <strong class="jxr_keyword">this</strong>.hbaseConfiguration = hbaseConfiguration;
+<a class="jxr_linenumber" name="68" href="#68">68</a>      }
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">PostCommitMode</a> getPostCommitMode() {
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">return</strong> omidClientConfiguration.getPostCommitMode();
+<a class="jxr_linenumber" name="72" href="#72">72</a>      }
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setPostCommitMode(<a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">PostCommitMode</a> postCommitMode) {
+<a class="jxr_linenumber" name="75" href="#75">75</a>          omidClientConfiguration.setPostCommitMode(postCommitMode);
+<a class="jxr_linenumber" name="76" href="#76">76</a>      }
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
+<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">ConflictDetectionLevel</a> getConflictAnalysisLevel() {
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">return</strong> omidClientConfiguration.getConflictAnalysisLevel();
+<a class="jxr_linenumber" name="80" href="#80">80</a>      }
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setConflictAnalysisLevel(<a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">ConflictDetectionLevel</a> conflictAnalysisLevel) {
+<a class="jxr_linenumber" name="83" href="#83">83</a>          omidClientConfiguration.setConflictAnalysisLevel(conflictAnalysisLevel);
+<a class="jxr_linenumber" name="84" href="#84">84</a>      }
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>      <strong class="jxr_keyword">public</strong> String getCommitTableName() {
+<a class="jxr_linenumber" name="87" href="#87">87</a>          <strong class="jxr_keyword">return</strong> commitTableName;
+<a class="jxr_linenumber" name="88" href="#88">88</a>      }
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>      @Inject(optional = <strong class="jxr_keyword">true</strong>)
+<a class="jxr_linenumber" name="91" href="#91">91</a>      @Named(<span class="jxr_string">"omid.client.hbase.commitTableName"</span>)
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setCommitTableName(String commitTableName) {
+<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">this</strong>.commitTableName = commitTableName;
+<a class="jxr_linenumber" name="94" href="#94">94</a>      }
+<a class="jxr_linenumber" name="95" href="#95">95</a>  
+<a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">OmidClientConfiguration</a> getOmidClientConfiguration() {
+<a class="jxr_linenumber" name="97" href="#97">97</a>          <strong class="jxr_keyword">return</strong> omidClientConfiguration;
+<a class="jxr_linenumber" name="98" href="#98">98</a>      }
+<a class="jxr_linenumber" name="99" href="#99">99</a>  
+<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setOmidClientConfiguration(<a href="../../../../org/apache/omid/tso/client/OmidClientConfiguration.html">OmidClientConfiguration</a> omidClientConfiguration) {
+<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">this</strong>.omidClientConfiguration = omidClientConfiguration;
+<a class="jxr_linenumber" name="102" href="#102">102</a>     }
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> getMetrics() {
+<a class="jxr_linenumber" name="105" href="#105">105</a>         <strong class="jxr_keyword">return</strong> metrics;
+<a class="jxr_linenumber" name="106" href="#106">106</a>     }
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>     @Inject(optional = <strong class="jxr_keyword">true</strong>)
+<a class="jxr_linenumber" name="109" href="#109">109</a>     @Named(<span class="jxr_string">"omid.client.hbase.metrics"</span>)
+<a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMetrics(<a href="../../../../org/apache/omid/metrics/MetricsRegistry.html">MetricsRegistry</a> metrics) {
+<a class="jxr_linenumber" name="111" href="#111">111</a>         <strong class="jxr_keyword">this</strong>.metrics = metrics;
+<a class="jxr_linenumber" name="112" href="#112">112</a>     }
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>     <em class="jxr_comment">// Delegation to make end-user life better</em>
+<a class="jxr_linenumber" name="115" href="#115">115</a> 
+<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">public</strong> OmidClientConfiguration.ConnType getConnectionType() {
+<a class="jxr_linenumber" name="117" href="#117">117</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getConnectionType();
+<a class="jxr_linenumber" name="118" href="#118">118</a>     }
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setReconnectionDelayInSecs(<strong class="jxr_keyword">int</strong> reconnectionDelayInSecs) {
+<a class="jxr_linenumber" name="121" href="#121">121</a>         omidClientConfiguration.setReconnectionDelayInSecs(reconnectionDelayInSecs);
+<a class="jxr_linenumber" name="122" href="#122">122</a>     }
+<a class="jxr_linenumber" name="123" href="#123">123</a> 
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setExecutorThreads(<strong class="jxr_keyword">int</strong> executorThreads) {
+<a class="jxr_linenumber" name="125" href="#125">125</a>         omidClientConfiguration.setExecutorThreads(executorThreads);
+<a class="jxr_linenumber" name="126" href="#126">126</a>     }
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getRequestTimeoutInMs() {
+<a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getRequestTimeoutInMs();
+<a class="jxr_linenumber" name="130" href="#130">130</a>     }
+<a class="jxr_linenumber" name="131" href="#131">131</a> 
+<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setConnectionString(String connectionString) {
+<a class="jxr_linenumber" name="133" href="#133">133</a>         omidClientConfiguration.setConnectionString(connectionString);
+<a class="jxr_linenumber" name="134" href="#134">134</a>     }
+<a class="jxr_linenumber" name="135" href="#135">135</a> 
+<a class="jxr_linenumber" name="136" href="#136">136</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRequestTimeoutInMs(<strong class="jxr_keyword">int</strong> requestTimeoutInMs) {
+<a class="jxr_linenumber" name="137" href="#137">137</a>         omidClientConfiguration.setRequestTimeoutInMs(requestTimeoutInMs);
+<a class="jxr_linenumber" name="138" href="#138">138</a>     }
+<a class="jxr_linenumber" name="139" href="#139">139</a> 
+<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setZkConnectionTimeoutInSecs(<strong class="jxr_keyword">int</strong> zkConnectionTimeoutInSecs) {
+<a class="jxr_linenumber" name="141" href="#141">141</a>         omidClientConfiguration.setZkConnectionTimeoutInSecs(zkConnectionTimeoutInSecs);
+<a class="jxr_linenumber" name="142" href="#142">142</a>     }
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setConnectionType(OmidClientConfiguration.ConnType connectionType) {
+<a class="jxr_linenumber" name="145" href="#145">145</a>         omidClientConfiguration.setConnectionType(connectionType);
+<a class="jxr_linenumber" name="146" href="#146">146</a>     }
+<a class="jxr_linenumber" name="147" href="#147">147</a> 
+<a class="jxr_linenumber" name="148" href="#148">148</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRequestMaxRetries(<strong class="jxr_keyword">int</strong> requestMaxRetries) {
+<a class="jxr_linenumber" name="149" href="#149">149</a>         omidClientConfiguration.setRequestMaxRetries(requestMaxRetries);
+<a class="jxr_linenumber" name="150" href="#150">150</a>     }
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getZkConnectionTimeoutInSecs() {
+<a class="jxr_linenumber" name="153" href="#153">153</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getZkConnectionTimeoutInSecs();
+<a class="jxr_linenumber" name="154" href="#154">154</a>     }
+<a class="jxr_linenumber" name="155" href="#155">155</a> 
+<a class="jxr_linenumber" name="156" href="#156">156</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRetryDelayInMs(<strong class="jxr_keyword">int</strong> retryDelayInMs) {
+<a class="jxr_linenumber" name="157" href="#157">157</a>         omidClientConfiguration.setRetryDelayInMs(retryDelayInMs);
+<a class="jxr_linenumber" name="158" href="#158">158</a>     }
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getExecutorThreads() {
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getExecutorThreads();
+<a class="jxr_linenumber" name="162" href="#162">162</a>     }
+<a class="jxr_linenumber" name="163" href="#163">163</a> 
+<a class="jxr_linenumber" name="164" href="#164">164</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getRetryDelayInMs() {
+<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getRetryDelayInMs();
+<a class="jxr_linenumber" name="166" href="#166">166</a>     }
+<a class="jxr_linenumber" name="167" href="#167">167</a> 
+<a class="jxr_linenumber" name="168" href="#168">168</a>     <strong class="jxr_keyword">public</strong> String getConnectionString() {
+<a class="jxr_linenumber" name="169" href="#169">169</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getConnectionString();
+<a class="jxr_linenumber" name="170" href="#170">170</a>     }
+<a class="jxr_linenumber" name="171" href="#171">171</a> 
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getRequestMaxRetries() {
+<a class="jxr_linenumber" name="173" href="#173">173</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getRequestMaxRetries();
+<a class="jxr_linenumber" name="174" href="#174">174</a>     }
+<a class="jxr_linenumber" name="175" href="#175">175</a> 
+<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getReconnectionDelayInSecs() {
+<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">return</strong> omidClientConfiguration.getReconnectionDelayInSecs();
+<a class="jxr_linenumber" name="178" href="#178">178</a>     }
+<a class="jxr_linenumber" name="179" href="#179">179</a> 
+<a class="jxr_linenumber" name="180" href="#180">180</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[42/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestCheckpoint.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestCheckpoint.html b/xref-test/org/apache/omid/transaction/TestCheckpoint.html
new file mode 100644
index 0000000..cbcd4b7
--- /dev/null
+++ b/xref-test/org/apache/omid/transaction/TestCheckpoint.html
@@ -0,0 +1,372 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TestCheckpoint xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/testapidocs/org/apache/omid/transaction/TestCheckpoint.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.AbstractTransaction.VisibilityLevel;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.junit.Assert;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestCheckpoint.html">TestCheckpoint</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestCheckpoint.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="42" href="#42">42</a>  
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> HBaseTransaction enforceHBaseTransactionAsParam(Transaction tx) {
+<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">if</strong> (tx instanceof HBaseTransaction) {
+<a class="jxr_linenumber" name="45" href="#45">45</a>              <strong class="jxr_keyword">return</strong> (HBaseTransaction) tx;
+<a class="jxr_linenumber" name="46" href="#46">46</a>          } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="47" href="#47">47</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
+<a class="jxr_linenumber" name="48" href="#48">48</a>                  String.format(<span class="jxr_string">"The transaction object passed %s is not an instance of HBaseTransaction"</span>,
+<a class="jxr_linenumber" name="49" href="#49">49</a>                                tx.getClass().getName()));
+<a class="jxr_linenumber" name="50" href="#50">50</a>          }
+<a class="jxr_linenumber" name="51" href="#51">51</a>      }
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>      @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testFewCheckPoints(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>          TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="57" href="#57">57</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>          byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="60" href="#60">60</a>          byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="61" href="#61">61</a>          byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="62" href="#62">62</a>          byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="63" href="#63">63</a>          byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="64" href="#64">64</a>          byte[] dataValue3 = Bytes.toBytes(<span class="jxr_string">"testWrite-3"</span>);
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>          Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>          HBaseTransaction hbaseTx1 = enforceHBaseTransactionAsParam(tx1);
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>          Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="71" href="#71">71</a>          row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="72" href="#72">72</a>          tt.put(tx1, row1);
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>          Get g = <strong class="jxr_keyword">new</strong> Get(rowName1).setMaxVersions(1);
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>          Result r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="78" href="#78">78</a>                  <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>          hbaseTx1.checkpoint();
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>          row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          row1.addColumn(famName1, colName1, dataValue2);
+<a class="jxr_linenumber" name="84" href="#84">84</a>          tt.put(tx1, row1);
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>          r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="87" href="#87">87</a>          assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="88" href="#88">88</a>                  <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>          hbaseTx1.setVisibilityLevel(VisibilityLevel.SNAPSHOT);
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>          r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="93" href="#93">93</a>          assertTrue(Bytes.equals(dataValue2, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="94" href="#94">94</a>                  <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="95" href="#95">95</a>  
+<a class="jxr_linenumber" name="96" href="#96">96</a>          hbaseTx1.checkpoint();
+<a class="jxr_linenumber" name="97" href="#97">97</a>  
+<a class="jxr_linenumber" name="98" href="#98">98</a>          row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          row1.addColumn(famName1, colName1, dataValue3);
+<a class="jxr_linenumber" name="100" href="#100">100</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="103" href="#103">103</a>         assertTrue(Bytes.equals(dataValue2, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="104" href="#104">104</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         hbaseTx1.checkpoint();
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="109" href="#109">109</a>         assertTrue(Bytes.equals(dataValue3, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="110" href="#110">110</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>         hbaseTx1.setVisibilityLevel(VisibilityLevel.SNAPSHOT_ALL);
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="115" href="#115">115</a>         
+<a class="jxr_linenumber" name="116" href="#116">116</a>         assertTrue(r.size() == 3, <span class="jxr_string">"Expected 3 results and found "</span> + r.size());
+<a class="jxr_linenumber" name="117" href="#117">117</a> 
+<a class="jxr_linenumber" name="118" href="#118">118</a>         List&lt;Cell&gt; cells = r.getColumnCells(famName1, colName1);
+<a class="jxr_linenumber" name="119" href="#119">119</a>         assertTrue(Bytes.equals(dataValue3, CellUtil.cloneValue(cells.get(0))),
+<a class="jxr_linenumber" name="120" href="#120">120</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>         assertTrue(Bytes.equals(dataValue2, CellUtil.cloneValue(cells.get(1))),
+<a class="jxr_linenumber" name="123" href="#123">123</a>               <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="124" href="#124">124</a> 
+<a class="jxr_linenumber" name="125" href="#125">125</a>         assertTrue(Bytes.equals(dataValue1, CellUtil.cloneValue(cells.get(2))),
+<a class="jxr_linenumber" name="126" href="#126">126</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="127" href="#127">127</a> 
+<a class="jxr_linenumber" name="128" href="#128">128</a>         tt.close();
+<a class="jxr_linenumber" name="129" href="#129">129</a>     }
+<a class="jxr_linenumber" name="130" href="#130">130</a> 
+<a class="jxr_linenumber" name="131" href="#131">131</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSNAPSHOT(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="133" href="#133">133</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="134" href="#134">134</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="135" href="#135">135</a> 
+<a class="jxr_linenumber" name="136" href="#136">136</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="137" href="#137">137</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="138" href="#138">138</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="139" href="#139">139</a>         byte[] dataValue0 = Bytes.toBytes(<span class="jxr_string">"testWrite-0"</span>);
+<a class="jxr_linenumber" name="140" href="#140">140</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="141" href="#141">141</a>         byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="142" href="#142">142</a> 
+<a class="jxr_linenumber" name="143" href="#143">143</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="144" href="#144">144</a> 
+<a class="jxr_linenumber" name="145" href="#145">145</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="146" href="#146">146</a>         row1.addColumn(famName1, colName1, dataValue0);
+<a class="jxr_linenumber" name="147" href="#147">147</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="148" href="#148">148</a> 
+<a class="jxr_linenumber" name="149" href="#149">149</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="150" href="#150">150</a> 
+<a class="jxr_linenumber" name="151" href="#151">151</a>         tx1 = tm.begin();
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>         HBaseTransaction hbaseTx1 = enforceHBaseTransactionAsParam(tx1);
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>         Get g = <strong class="jxr_keyword">new</strong> Get(rowName1).setMaxVersions(1);
+<a class="jxr_linenumber" name="156" href="#156">156</a> 
+<a class="jxr_linenumber" name="157" href="#157">157</a>         Result r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="158" href="#158">158</a>         assertTrue(Bytes.equals(dataValue0, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="159" href="#159">159</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="160" href="#160">160</a> 
+<a class="jxr_linenumber" name="161" href="#161">161</a>         row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="162" href="#162">162</a>         row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="163" href="#163">163</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a> 
+<a class="jxr_linenumber" name="166" href="#166">166</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="167" href="#167">167</a>         assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="168" href="#168">168</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="169" href="#169">169</a> 
+<a class="jxr_linenumber" name="170" href="#170">170</a>         hbaseTx1.checkpoint();
+<a class="jxr_linenumber" name="171" href="#171">171</a> 
+<a class="jxr_linenumber" name="172" href="#172">172</a>         row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="173" href="#173">173</a>         row1.addColumn(famName1, colName1, dataValue2);
+<a class="jxr_linenumber" name="174" href="#174">174</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="175" href="#175">175</a> 
+<a class="jxr_linenumber" name="176" href="#176">176</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="178" href="#178">178</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="179" href="#179">179</a> 
+<a class="jxr_linenumber" name="180" href="#180">180</a>         hbaseTx1.setVisibilityLevel(VisibilityLevel.SNAPSHOT);
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="183" href="#183">183</a>         assertTrue(Bytes.equals(dataValue2, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="184" href="#184">184</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="185" href="#185">185</a> 
+<a class="jxr_linenumber" name="186" href="#186">186</a>         tt.close();
+<a class="jxr_linenumber" name="187" href="#187">187</a>     }
+<a class="jxr_linenumber" name="188" href="#188">188</a>     
+<a class="jxr_linenumber" name="189" href="#189">189</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSNAPSHOT_ALL(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="191" href="#191">191</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="192" href="#192">192</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="193" href="#193">193</a> 
+<a class="jxr_linenumber" name="194" href="#194">194</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="195" href="#195">195</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="196" href="#196">196</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="197" href="#197">197</a>         byte[] dataValue0 = Bytes.toBytes(<span class="jxr_string">"testWrite-0"</span>);
+<a class="jxr_linenumber" name="198" href="#198">198</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="199" href="#199">199</a>         byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="200" href="#200">200</a> 
+<a class="jxr_linenumber" name="201" href="#201">201</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="202" href="#202">202</a> 
+<a class="jxr_linenumber" name="203" href="#203">203</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="204" href="#204">204</a>         row1.addColumn(famName1, colName1, dataValue0);
+<a class="jxr_linenumber" name="205" href="#205">205</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="208" href="#208">208</a> 
+<a class="jxr_linenumber" name="209" href="#209">209</a>         tx1 = tm.begin();
+<a class="jxr_linenumber" name="210" href="#210">210</a>         
+<a class="jxr_linenumber" name="211" href="#211">211</a>         HBaseTransaction hbaseTx1 = enforceHBaseTransactionAsParam(tx1);
+<a class="jxr_linenumber" name="212" href="#212">212</a> 
+<a class="jxr_linenumber" name="213" href="#213">213</a>         Get g = <strong class="jxr_keyword">new</strong> Get(rowName1).setMaxVersions(100);
+<a class="jxr_linenumber" name="214" href="#214">214</a> 
+<a class="jxr_linenumber" name="215" href="#215">215</a>         Result r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="216" href="#216">216</a>         assertTrue(Bytes.equals(dataValue0, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="217" href="#217">217</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>         row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="220" href="#220">220</a>         row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="221" href="#221">221</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="222" href="#222">222</a> 
+<a class="jxr_linenumber" name="223" href="#223">223</a>         g = <strong class="jxr_keyword">new</strong> Get(rowName1).setMaxVersions(100);
+<a class="jxr_linenumber" name="224" href="#224">224</a> 
+<a class="jxr_linenumber" name="225" href="#225">225</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="226" href="#226">226</a>         assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="227" href="#227">227</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="228" href="#228">228</a> 
+<a class="jxr_linenumber" name="229" href="#229">229</a>         hbaseTx1.checkpoint();
+<a class="jxr_linenumber" name="230" href="#230">230</a> 
+<a class="jxr_linenumber" name="231" href="#231">231</a>         row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="232" href="#232">232</a>         row1.addColumn(famName1, colName1, dataValue2);
+<a class="jxr_linenumber" name="233" href="#233">233</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="234" href="#234">234</a> 
+<a class="jxr_linenumber" name="235" href="#235">235</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="236" href="#236">236</a>         assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="237" href="#237">237</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="238" href="#238">238</a> 
+<a class="jxr_linenumber" name="239" href="#239">239</a>         hbaseTx1.setVisibilityLevel(VisibilityLevel.SNAPSHOT_ALL);
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="242" href="#242">242</a>         
+<a class="jxr_linenumber" name="243" href="#243">243</a>         assertTrue(r.size() == 3, <span class="jxr_string">"Expected 3 results and found "</span> + r.size());
+<a class="jxr_linenumber" name="244" href="#244">244</a> 
+<a class="jxr_linenumber" name="245" href="#245">245</a>         List&lt;Cell&gt; cells = r.getColumnCells(famName1, colName1);
+<a class="jxr_linenumber" name="246" href="#246">246</a>         assertTrue(Bytes.equals(dataValue2, CellUtil.cloneValue(cells.get(0))),
+<a class="jxr_linenumber" name="247" href="#247">247</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="248" href="#248">248</a> 
+<a class="jxr_linenumber" name="249" href="#249">249</a>         assertTrue(Bytes.equals(dataValue1, CellUtil.cloneValue(cells.get(1))),
+<a class="jxr_linenumber" name="250" href="#250">250</a>               <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="251" href="#251">251</a> 
+<a class="jxr_linenumber" name="252" href="#252">252</a>         assertTrue(Bytes.equals(dataValue0, CellUtil.cloneValue(cells.get(2))),
+<a class="jxr_linenumber" name="253" href="#253">253</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="254" href="#254">254</a> 
+<a class="jxr_linenumber" name="255" href="#255">255</a>         tt.close();
+<a class="jxr_linenumber" name="256" href="#256">256</a>     }
+<a class="jxr_linenumber" name="257" href="#257">257</a> 
+<a class="jxr_linenumber" name="258" href="#258">258</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="259" href="#259">259</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSNAPSHOT_EXCLUDE_CURRENT(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="260" href="#260">260</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="261" href="#261">261</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="262" href="#262">262</a> 
+<a class="jxr_linenumber" name="263" href="#263">263</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="264" href="#264">264</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="265" href="#265">265</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="266" href="#266">266</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="267" href="#267">267</a>         byte[] dataValue2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
+<a class="jxr_linenumber" name="268" href="#268">268</a> 
+<a class="jxr_linenumber" name="269" href="#269">269</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="270" href="#270">270</a> 
+<a class="jxr_linenumber" name="271" href="#271">271</a>         HBaseTransaction hbaseTx1 = enforceHBaseTransactionAsParam(tx1);
+<a class="jxr_linenumber" name="272" href="#272">272</a> 
+<a class="jxr_linenumber" name="273" href="#273">273</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="274" href="#274">274</a>         row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="275" href="#275">275</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="276" href="#276">276</a> 
+<a class="jxr_linenumber" name="277" href="#277">277</a>         Get g = <strong class="jxr_keyword">new</strong> Get(rowName1).setMaxVersions(1);
+<a class="jxr_linenumber" name="278" href="#278">278</a> 
+<a class="jxr_linenumber" name="279" href="#279">279</a>         Result r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="280" href="#280">280</a>         assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="281" href="#281">281</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="282" href="#282">282</a> 
+<a class="jxr_linenumber" name="283" href="#283">283</a>         hbaseTx1.checkpoint();
+<a class="jxr_linenumber" name="284" href="#284">284</a> 
+<a class="jxr_linenumber" name="285" href="#285">285</a>         row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="286" href="#286">286</a>         row1.addColumn(famName1, colName1, dataValue2);
+<a class="jxr_linenumber" name="287" href="#287">287</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="288" href="#288">288</a> 
+<a class="jxr_linenumber" name="289" href="#289">289</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="290" href="#290">290</a>         assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="291" href="#291">291</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="292" href="#292">292</a> 
+<a class="jxr_linenumber" name="293" href="#293">293</a>         hbaseTx1.setVisibilityLevel(VisibilityLevel.SNAPSHOT_EXCLUDE_CURRENT);
+<a class="jxr_linenumber" name="294" href="#294">294</a> 
+<a class="jxr_linenumber" name="295" href="#295">295</a>         r = tt.get(tx1, g);
+<a class="jxr_linenumber" name="296" href="#296">296</a>         assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)),
+<a class="jxr_linenumber" name="297" href="#297">297</a>                 <span class="jxr_string">"Unexpected value for SI read "</span> + tx1 + <span class="jxr_string">": "</span> + Bytes.toString(r.getValue(famName1, colName1)));
+<a class="jxr_linenumber" name="298" href="#298">298</a>         
+<a class="jxr_linenumber" name="299" href="#299">299</a>         tt.close();
+<a class="jxr_linenumber" name="300" href="#300">300</a>     }
+<a class="jxr_linenumber" name="301" href="#301">301</a> 
+<a class="jxr_linenumber" name="302" href="#302">302</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="303" href="#303">303</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDeleteAfterCheckpoint(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="304" href="#304">304</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="305" href="#305">305</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="306" href="#306">306</a> 
+<a class="jxr_linenumber" name="307" href="#307">307</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="308" href="#308">308</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="309" href="#309">309</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="310" href="#310">310</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="311" href="#311">311</a> 
+<a class="jxr_linenumber" name="312" href="#312">312</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="313" href="#313">313</a> 
+<a class="jxr_linenumber" name="314" href="#314">314</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="315" href="#315">315</a>         row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="316" href="#316">316</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="317" href="#317">317</a> 
+<a class="jxr_linenumber" name="318" href="#318">318</a>         tm.commit(tx1);
+<a class="jxr_linenumber" name="319" href="#319">319</a> 
+<a class="jxr_linenumber" name="320" href="#320">320</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="321" href="#321">321</a> 
+<a class="jxr_linenumber" name="322" href="#322">322</a>         HBaseTransaction hbaseTx2 = enforceHBaseTransactionAsParam(tx1);
+<a class="jxr_linenumber" name="323" href="#323">323</a> 
+<a class="jxr_linenumber" name="324" href="#324">324</a>         hbaseTx2.checkpoint();
+<a class="jxr_linenumber" name="325" href="#325">325</a> 
+<a class="jxr_linenumber" name="326" href="#326">326</a>         Delete d = <strong class="jxr_keyword">new</strong> Delete(rowName1);
+<a class="jxr_linenumber" name="327" href="#327">327</a>         tt.delete(tx2, d);
+<a class="jxr_linenumber" name="328" href="#328">328</a> 
+<a class="jxr_linenumber" name="329" href="#329">329</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="330" href="#330">330</a>             tm.commit(tx2);
+<a class="jxr_linenumber" name="331" href="#331">331</a>         } <strong class="jxr_keyword">catch</strong> (TransactionException e) {
+<a class="jxr_linenumber" name="332" href="#332">332</a>             Assert.fail();
+<a class="jxr_linenumber" name="333" href="#333">333</a>         }
+<a class="jxr_linenumber" name="334" href="#334">334</a> 
+<a class="jxr_linenumber" name="335" href="#335">335</a>         tt.close();
+<a class="jxr_linenumber" name="336" href="#336">336</a>     }
+<a class="jxr_linenumber" name="337" href="#337">337</a> 
+<a class="jxr_linenumber" name="338" href="#338">338</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="339" href="#339">339</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOutOfCheckpoints(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="340" href="#340">340</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="341" href="#341">341</a> 
+<a class="jxr_linenumber" name="342" href="#342">342</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="343" href="#343">343</a> 
+<a class="jxr_linenumber" name="344" href="#344">344</a>         HBaseTransaction hbaseTx1 = enforceHBaseTransactionAsParam(tx1);
+<a class="jxr_linenumber" name="345" href="#345">345</a> 
+<a class="jxr_linenumber" name="346" href="#346">346</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i &lt; AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN - 1; ++i) {
+<a class="jxr_linenumber" name="347" href="#347">347</a>             hbaseTx1.checkpoint();
+<a class="jxr_linenumber" name="348" href="#348">348</a>         }
+<a class="jxr_linenumber" name="349" href="#349">349</a> 
+<a class="jxr_linenumber" name="350" href="#350">350</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="351" href="#351">351</a>             hbaseTx1.checkpoint();
+<a class="jxr_linenumber" name="352" href="#352">352</a>             Assert.fail();
+<a class="jxr_linenumber" name="353" href="#353">353</a>         } <strong class="jxr_keyword">catch</strong> (TransactionException e) {
+<a class="jxr_linenumber" name="354" href="#354">354</a>             <em class="jxr_comment">// expected</em>
+<a class="jxr_linenumber" name="355" href="#355">355</a>         }
+<a class="jxr_linenumber" name="356" href="#356">356</a> 
+<a class="jxr_linenumber" name="357" href="#357">357</a>     }
+<a class="jxr_linenumber" name="358" href="#358">358</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestColumnIterator.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestColumnIterator.html b/xref-test/org/apache/omid/transaction/TestColumnIterator.html
index 0c4c67a..bad5ca9 100644
--- a/xref-test/org/apache/omid/transaction/TestColumnIterator.html
+++ b/xref-test/org/apache/omid/transaction/TestColumnIterator.html
@@ -57,13 +57,13 @@
 <a class="jxr_linenumber" name="47" href="#47">47</a>                      <em class="jxr_comment">// Group 1 (3 elems but grouping should filter shadow cell, so check for 2)</em>
 <a class="jxr_linenumber" name="48" href="#48">48</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family1, qualifier1, 0, data),
 <a class="jxr_linenumber" name="49" href="#49">49</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family1, qualifier1, 1, data),
-<a class="jxr_linenumber" name="50" href="#50">50</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family1, CellUtils.addShadowCellSuffix(qualifier1), 0, data),
+<a class="jxr_linenumber" name="50" href="#50">50</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family1, CellUtils.addShadowCellSuffixPrefix(qualifier1), 0, data),
 <a class="jxr_linenumber" name="51" href="#51">51</a>                      <em class="jxr_comment">// Group 2 (2 elems but grouping should filter shadow cell, so check for 1)</em>
 <a class="jxr_linenumber" name="52" href="#52">52</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family1, qualifier2, 0, data),
-<a class="jxr_linenumber" name="53" href="#53">53</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family1, CellUtils.addShadowCellSuffix(qualifier2), 0, data),
+<a class="jxr_linenumber" name="53" href="#53">53</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family1, CellUtils.addShadowCellSuffixPrefix(qualifier2), 0, data),
 <a class="jxr_linenumber" name="54" href="#54">54</a>                      <em class="jxr_comment">// Group 3 (2 elems but grouping should filter shadow cell, so check for 1)</em>
 <a class="jxr_linenumber" name="55" href="#55">55</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family2, qualifier1, 0, data),
-<a class="jxr_linenumber" name="56" href="#56">56</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family2, CellUtils.addShadowCellSuffix(qualifier1), 0, data)
+<a class="jxr_linenumber" name="56" href="#56">56</a>                      <strong class="jxr_keyword">new</strong> KeyValue(row, family2, CellUtils.addShadowCellSuffixPrefix(qualifier1), 0, data)
 <a class="jxr_linenumber" name="57" href="#57">57</a>              )
 <a class="jxr_linenumber" name="58" href="#58">58</a>      );
 <a class="jxr_linenumber" name="59" href="#59">59</a>  
@@ -71,7 +71,7 @@
 <a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGroupingCellsByColumnFilteringShadowCells() {
 <a class="jxr_linenumber" name="62" href="#62">62</a>  
 <a class="jxr_linenumber" name="63" href="#63">63</a>          ImmutableList&lt;Collection&lt;Cell&gt;&gt; groupedColumnsWithoutShadowCells =
-<a class="jxr_linenumber" name="64" href="#64">64</a>                  TTable.groupCellsByColumnFilteringShadowCells(cells);
+<a class="jxr_linenumber" name="64" href="#64">64</a>                  SnapshotFilterImpl.groupCellsByColumnFilteringShadowCellsAndFamilyDeletion(cells);
 <a class="jxr_linenumber" name="65" href="#65">65</a>          Log.info(<span class="jxr_string">"Column Groups "</span> + groupedColumnsWithoutShadowCells);
 <a class="jxr_linenumber" name="66" href="#66">66</a>          assertEquals(groupedColumnsWithoutShadowCells.size(), 3, <span class="jxr_string">"Should be 3 column groups"</span>);
 <a class="jxr_linenumber" name="67" href="#67">67</a>          <strong class="jxr_keyword">int</strong> group1Counter = 0;



[44/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html b/xref-test/org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html
new file mode 100644
index 0000000..0895d26
--- /dev/null
+++ b/xref-test/org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html
@@ -0,0 +1,148 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>TSOForSnapshotFilterTestModule xref</title>
+<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../../target/site/testapidocs/org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.inject.AbstractModule;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Provider;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Provides;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTable;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorage;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.TimestampStorage;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.BatchPoolModule;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.DisruptorModule;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.LeaseManagement;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.MockPanicker;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.NetworkInterfaceUtils;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.Panicker;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.PersistenceProcessorHandler;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOChannelHandler;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOStateManager;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOStateManagerImpl;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TimestampOracle;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TimestampOracleImpl;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.VoidLeaseManager;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.io.FileUtils;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> javax.inject.Named;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> javax.inject.Singleton;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> java.io.File;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> java.net.SocketException;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> java.net.UnknownHostException;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.tso.TSOServer.TSO_HOST_AND_PORT_KEY;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html">TSOForSnapshotFilterTestModule</a> <strong class="jxr_keyword">extends</strong> AbstractModule {
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> TSOServerConfig config;
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <a href="../../../../org/apache/omid/transaction/TSOForSnapshotFilterTestModule.html">TSOForSnapshotFilterTestModule</a>(TSOServerConfig config) {
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">this</strong>.config = config;
+<a class="jxr_linenumber" name="64" href="#64">64</a>      }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      @Override
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> configure() {
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>          bind(TSOChannelHandler.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>          bind(TSOStateManager.<strong class="jxr_keyword">class</strong>).to(TSOStateManagerImpl.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>          bind(Panicker.<strong class="jxr_keyword">class</strong>).to(MockPanicker.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="74" href="#74">74</a>          <em class="jxr_comment">// HBase commit table creation</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>          bind(CommitTable.<strong class="jxr_keyword">class</strong>).to(HBaseCommitTable.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="76" href="#76">76</a>          <em class="jxr_comment">// Timestamp storage creation</em>
+<a class="jxr_linenumber" name="77" href="#77">77</a>          bind(TimestampStorage.<strong class="jxr_keyword">class</strong>).to(HBaseTimestampStorage.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="78" href="#78">78</a>          bind(TimestampOracle.<strong class="jxr_keyword">class</strong>).to(TimestampOracleImpl.<strong class="jxr_keyword">class</strong>).in(Singleton.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>          install(<strong class="jxr_keyword">new</strong> BatchPoolModule(config));
+<a class="jxr_linenumber" name="81" href="#81">81</a>          <em class="jxr_comment">// DisruptorConfig</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>          install(<strong class="jxr_keyword">new</strong> DisruptorModule(config));
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>      }
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>      @Provides
+<a class="jxr_linenumber" name="87" href="#87">87</a>      @Singleton
+<a class="jxr_linenumber" name="88" href="#88">88</a>      Configuration provideHBaseConfig() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="89" href="#89">89</a>          Configuration hbaseConf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="90" href="#90">90</a>          hbaseConf.setBoolean(<span class="jxr_string">"hbase.localcluster.assign.random.ports"</span>,<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="91" href="#91">91</a>          hbaseConf.setInt(<span class="jxr_string">"hbase.hregion.memstore.flush.size"</span>, 10_000 * 1024);
+<a class="jxr_linenumber" name="92" href="#92">92</a>          hbaseConf.setInt(<span class="jxr_string">"hbase.regionserver.nbreservationblocks"</span>, 1);
+<a class="jxr_linenumber" name="93" href="#93">93</a>          hbaseConf.set(<span class="jxr_string">"tso.host"</span>, <span class="jxr_string">"localhost"</span>);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          hbaseConf.setInt(<span class="jxr_string">"tso.port"</span>, 1234);
+<a class="jxr_linenumber" name="95" href="#95">95</a>          <strong class="jxr_keyword">final</strong> String rootdir = <span class="jxr_string">"/tmp/hbase.test.dir/"</span>;
+<a class="jxr_linenumber" name="96" href="#96">96</a>          File rootdirFile = <strong class="jxr_keyword">new</strong> File(rootdir);
+<a class="jxr_linenumber" name="97" href="#97">97</a>          FileUtils.deleteDirectory(rootdirFile);
+<a class="jxr_linenumber" name="98" href="#98">98</a>          hbaseConf.set(<span class="jxr_string">"hbase.rootdir"</span>, rootdir);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">return</strong> hbaseConf;
+<a class="jxr_linenumber" name="100" href="#100">100</a>     }
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>     @Provides
+<a class="jxr_linenumber" name="103" href="#103">103</a>     TSOServerConfig provideTSOServerConfig() {
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">return</strong> config;
+<a class="jxr_linenumber" name="105" href="#105">105</a>     }
+<a class="jxr_linenumber" name="106" href="#106">106</a> 
+<a class="jxr_linenumber" name="107" href="#107">107</a>     @Provides
+<a class="jxr_linenumber" name="108" href="#108">108</a>     @Singleton
+<a class="jxr_linenumber" name="109" href="#109">109</a>     MetricsRegistry provideMetricsRegistry() {
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NullMetricsProvider();
+<a class="jxr_linenumber" name="111" href="#111">111</a>     }
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>     @Provides
+<a class="jxr_linenumber" name="114" href="#114">114</a>     @Singleton
+<a class="jxr_linenumber" name="115" href="#115">115</a>     LeaseManagement provideLeaseManager(TSOChannelHandler tsoChannelHandler,
+<a class="jxr_linenumber" name="116" href="#116">116</a>                                         TSOStateManager stateManager) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="117" href="#117">117</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> VoidLeaseManager(tsoChannelHandler, stateManager);
+<a class="jxr_linenumber" name="118" href="#118">118</a>     }
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>     @Provides
+<a class="jxr_linenumber" name="121" href="#121">121</a>     @Named(TSO_HOST_AND_PORT_KEY)
+<a class="jxr_linenumber" name="122" href="#122">122</a>     String provideTSOHostAndPort() <strong class="jxr_keyword">throws</strong> SocketException, UnknownHostException {
+<a class="jxr_linenumber" name="123" href="#123">123</a>         <strong class="jxr_keyword">return</strong> NetworkInterfaceUtils.getTSOHostAndPort(config);
+<a class="jxr_linenumber" name="124" href="#124">124</a>     }
+<a class="jxr_linenumber" name="125" href="#125">125</a> 
+<a class="jxr_linenumber" name="126" href="#126">126</a>     @Provides
+<a class="jxr_linenumber" name="127" href="#127">127</a>     PersistenceProcessorHandler[] getPersistenceProcessorHandler(Provider&lt;PersistenceProcessorHandler&gt; provider) {
+<a class="jxr_linenumber" name="128" href="#128">128</a>         PersistenceProcessorHandler[] persistenceProcessorHandlers = <strong class="jxr_keyword">new</strong> PersistenceProcessorHandler[config.getNumConcurrentCTWriters()];
+<a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; persistenceProcessorHandlers.length; i++) {
+<a class="jxr_linenumber" name="130" href="#130">130</a>             persistenceProcessorHandlers[i] = provider.get();
+<a class="jxr_linenumber" name="131" href="#131">131</a>         }
+<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">return</strong> persistenceProcessorHandlers;
+<a class="jxr_linenumber" name="133" href="#133">133</a>     }
+<a class="jxr_linenumber" name="134" href="#134">134</a> }
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestAsynchronousPostCommitter.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestAsynchronousPostCommitter.html b/xref-test/org/apache/omid/transaction/TestAsynchronousPostCommitter.html
index efab50c..2794aba 100644
--- a/xref-test/org/apache/omid/transaction/TestAsynchronousPostCommitter.html
+++ b/xref-test/org/apache/omid/transaction/TestAsynchronousPostCommitter.html
@@ -27,50 +27,50 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListeningExecutorService;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.MoreExecutors;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ThreadFactoryBuilder;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.times;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNotNull;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="51" href="#51">51</a>  
-<a class="jxr_linenumber" name="52" href="#52">52</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestAsynchronousPostCommitter.html">TestAsynchronousPostCommitter</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestAsynchronousPostCommitter.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
-<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] nonExistentFamily = Bytes.toBytes(<span class="jxr_string">"non-existent"</span>);
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doAnswer;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.spy;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.times;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNotNull;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.mockito.invocation.InvocationOnMock;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.mockito.stubbing.Answer;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListeningExecutorService;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.MoreExecutors;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ThreadFactoryBuilder;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestAsynchronousPostCommitter.html">TestAsynchronousPostCommitter</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestAsynchronousPostCommitter.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(TEST_FAMILY);
 <a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"test-qual"</span>);
 <a class="jxr_linenumber" name="60" href="#60">60</a>  
 <a class="jxr_linenumber" name="61" href="#61">61</a>      byte[] row1 = Bytes.toBytes(<span class="jxr_string">"test-is-committed1"</span>);
 <a class="jxr_linenumber" name="62" href="#62">62</a>      byte[] row2 = Bytes.toBytes(<span class="jxr_string">"test-is-committed2"</span>);
-<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>      
 <a class="jxr_linenumber" name="64" href="#64">64</a>      @Test(timeOut = 30_000)
 <a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPostCommitActionsAreCalledAsynchronously(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="66" href="#66">66</a>  
@@ -117,16 +117,16 @@
 <a class="jxr_linenumber" name="107" href="#107">107</a>             }
 <a class="jxr_linenumber" name="108" href="#108">108</a>         }).when(syncPostCommitter).removeCommitTableEntry(any(AbstractTransaction.<strong class="jxr_keyword">class</strong>));
 <a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
 <a class="jxr_linenumber" name="111" href="#111">111</a> 
 <a class="jxr_linenumber" name="112" href="#112">112</a>             <em class="jxr_comment">// Execute tx with async post commit actions</em>
 <a class="jxr_linenumber" name="113" href="#113">113</a>             Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="114" href="#114">114</a> 
 <a class="jxr_linenumber" name="115" href="#115">115</a>             Put put1 = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="116" href="#116">116</a>             put1.add(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hey!"</span>));
+<a class="jxr_linenumber" name="116" href="#116">116</a>             put1.addColumn(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hey!"</span>));
 <a class="jxr_linenumber" name="117" href="#117">117</a>             txTable.put(tx1, put1);
 <a class="jxr_linenumber" name="118" href="#118">118</a>             Put put2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="119" href="#119">119</a>             put2.add(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hou!"</span>));
+<a class="jxr_linenumber" name="119" href="#119">119</a>             put2.addColumn(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hou!"</span>));
 <a class="jxr_linenumber" name="120" href="#120">120</a>             txTable.put(tx1, put2);
 <a class="jxr_linenumber" name="121" href="#121">121</a> 
 <a class="jxr_linenumber" name="122" href="#122">122</a>             tm.commit(tx1);
@@ -224,16 +224,16 @@
 <a class="jxr_linenumber" name="214" href="#214">214</a>         }).when(syncPostCommitter).removeCommitTableEntry(any(AbstractTransaction.<strong class="jxr_keyword">class</strong>));
 <a class="jxr_linenumber" name="215" href="#215">215</a> 
 <a class="jxr_linenumber" name="216" href="#216">216</a> 
-<a class="jxr_linenumber" name="217" href="#217">217</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
+<a class="jxr_linenumber" name="217" href="#217">217</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
 <a class="jxr_linenumber" name="218" href="#218">218</a> 
 <a class="jxr_linenumber" name="219" href="#219">219</a>             <em class="jxr_comment">// Execute tx with async post commit actions</em>
 <a class="jxr_linenumber" name="220" href="#220">220</a>             Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="221" href="#221">221</a> 
 <a class="jxr_linenumber" name="222" href="#222">222</a>             Put put1 = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="223" href="#223">223</a>             put1.add(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hey!"</span>));
+<a class="jxr_linenumber" name="223" href="#223">223</a>             put1.addColumn(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hey!"</span>));
 <a class="jxr_linenumber" name="224" href="#224">224</a>             txTable.put(tx1, put1);
 <a class="jxr_linenumber" name="225" href="#225">225</a>             Put put2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="226" href="#226">226</a>             put2.add(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hou!"</span>));
+<a class="jxr_linenumber" name="226" href="#226">226</a>             put2.addColumn(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hou!"</span>));
 <a class="jxr_linenumber" name="227" href="#227">227</a>             txTable.put(tx1, put2);
 <a class="jxr_linenumber" name="228" href="#228">228</a> 
 <a class="jxr_linenumber" name="229" href="#229">229</a>             tm.commit(tx1);
@@ -293,16 +293,16 @@
 <a class="jxr_linenumber" name="283" href="#283">283</a>         }).when(syncPostCommitter).removeCommitTableEntry(any(AbstractTransaction.<strong class="jxr_keyword">class</strong>));
 <a class="jxr_linenumber" name="284" href="#284">284</a> 
 <a class="jxr_linenumber" name="285" href="#285">285</a> 
-<a class="jxr_linenumber" name="286" href="#286">286</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE)) {
+<a class="jxr_linenumber" name="286" href="#286">286</a>         <strong class="jxr_keyword">try</strong> (TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE)) {
 <a class="jxr_linenumber" name="287" href="#287">287</a> 
 <a class="jxr_linenumber" name="288" href="#288">288</a>             <em class="jxr_comment">// Execute tx with async post commit actions</em>
 <a class="jxr_linenumber" name="289" href="#289">289</a>             Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="290" href="#290">290</a> 
 <a class="jxr_linenumber" name="291" href="#291">291</a>             Put put1 = <strong class="jxr_keyword">new</strong> Put(row1);
-<a class="jxr_linenumber" name="292" href="#292">292</a>             put1.add(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hey!"</span>));
+<a class="jxr_linenumber" name="292" href="#292">292</a>             put1.addColumn(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hey!"</span>));
 <a class="jxr_linenumber" name="293" href="#293">293</a>             txTable.put(tx1, put1);
 <a class="jxr_linenumber" name="294" href="#294">294</a>             Put put2 = <strong class="jxr_keyword">new</strong> Put(row2);
-<a class="jxr_linenumber" name="295" href="#295">295</a>             put2.add(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hou!"</span>));
+<a class="jxr_linenumber" name="295" href="#295">295</a>             put2.addColumn(family, qualifier, Bytes.toBytes(<span class="jxr_string">"hou!"</span>));
 <a class="jxr_linenumber" name="296" href="#296">296</a>             txTable.put(tx1, put2);
 <a class="jxr_linenumber" name="297" href="#297">297</a> 
 <a class="jxr_linenumber" name="298" href="#298">298</a>             tm.commit(tx1);

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestAutoFlush.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestAutoFlush.html b/xref-test/org/apache/omid/transaction/TestAutoFlush.html
index c8c7961..8102cad 100644
--- a/xref-test/org/apache/omid/transaction/TestAutoFlush.html
+++ b/xref-test/org/apache/omid/transaction/TestAutoFlush.html
@@ -27,14 +27,14 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="28" href="#28">28</a>  
 <a class="jxr_linenumber" name="29" href="#29">29</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
 <a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestAutoFlush.html">TestAutoFlush</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
@@ -47,14 +47,14 @@
 <a class="jxr_linenumber" name="37" href="#37">37</a>          byte[] col = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
 <a class="jxr_linenumber" name="38" href="#38">38</a>          byte[] data = Bytes.toBytes(<span class="jxr_string">"data"</span>);
 <a class="jxr_linenumber" name="39" href="#39">39</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="40" href="#40">40</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="40" href="#40">40</a>          TTable table = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="41" href="#41">41</a>  
 <a class="jxr_linenumber" name="42" href="#42">42</a>          <em class="jxr_comment">// Turn off autoflush</em>
 <a class="jxr_linenumber" name="43" href="#43">43</a>          table.setAutoFlush(false);
 <a class="jxr_linenumber" name="44" href="#44">44</a>  
 <a class="jxr_linenumber" name="45" href="#45">45</a>          Transaction t = tm.begin();
 <a class="jxr_linenumber" name="46" href="#46">46</a>          Put put = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="47" href="#47">47</a>          put.add(family, col, data);
+<a class="jxr_linenumber" name="47" href="#47">47</a>          put.addColumn(family, col, data);
 <a class="jxr_linenumber" name="48" href="#48">48</a>          table.put(t, put);
 <a class="jxr_linenumber" name="49" href="#49">49</a>  
 <a class="jxr_linenumber" name="50" href="#50">50</a>          <em class="jxr_comment">// Data shouldn't be in DB yet</em>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.html b/xref-test/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.html
index 9692d9e..088eed1 100644
--- a/xref-test/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.html
+++ b/xref-test/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.html
@@ -27,27 +27,27 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.CompareFilter;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.slf4j.LoggerFactory.getLogger;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.slf4j.LoggerFactory.getLogger;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertNull;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.CompareFilter;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="41" href="#41">41</a>  
 <a class="jxr_linenumber" name="42" href="#42">42</a>  <em class="jxr_javadoccomment">/**</em>
 <a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * These tests try to analyze the transactional anomalies described by P. Baillis et al. in</em>
@@ -99,7 +99,7 @@
 <a class="jxr_linenumber" name="89" href="#89">89</a>  
 <a class="jxr_linenumber" name="90" href="#90">90</a>          <em class="jxr_comment">// 0) Start transactions</em>
 <a class="jxr_linenumber" name="91" href="#91">91</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="92" href="#92">92</a>          TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="92" href="#92">92</a>          TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="93" href="#93">93</a>  
 <a class="jxr_linenumber" name="94" href="#94">94</a>          Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="95" href="#95">95</a>          Transaction tx2 = tm.begin();
@@ -113,7 +113,7 @@
 <a class="jxr_linenumber" name="103" href="#103">103</a> 
 <a class="jxr_linenumber" name="104" href="#104">104</a>         <em class="jxr_comment">// 2) insert into test (id, value) values(3, 30); -- T2</em>
 <a class="jxr_linenumber" name="105" href="#105">105</a>         Put newRow = <strong class="jxr_keyword">new</strong> Put(rowId3);
-<a class="jxr_linenumber" name="106" href="#106">106</a>         newRow.add(famName, colName, dataValue3);
+<a class="jxr_linenumber" name="106" href="#106">106</a>         newRow.addColumn(famName, colName, dataValue3);
 <a class="jxr_linenumber" name="107" href="#107">107</a>         txTable.put(tx2, newRow);
 <a class="jxr_linenumber" name="108" href="#108">108</a> 
 <a class="jxr_linenumber" name="109" href="#109">109</a>         <em class="jxr_comment">// 3) Commit TX 2</em>
@@ -139,7 +139,7 @@
 <a class="jxr_linenumber" name="129" href="#129">129</a> 
 <a class="jxr_linenumber" name="130" href="#130">130</a>         <em class="jxr_comment">// 0) Start transactions</em>
 <a class="jxr_linenumber" name="131" href="#131">131</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="132" href="#132">132</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="133" href="#133">133</a>         Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="134" href="#134">134</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="135" href="#135">135</a> 
@@ -153,7 +153,7 @@
 <a class="jxr_linenumber" name="143" href="#143">143</a>             Put row = <strong class="jxr_keyword">new</strong> Put(updateRes.getRow());
 <a class="jxr_linenumber" name="144" href="#144">144</a>             <strong class="jxr_keyword">int</strong> val = Bytes.toInt(updateRes.getValue(famName, colName));
 <a class="jxr_linenumber" name="145" href="#145">145</a>             LOG.info(<span class="jxr_string">"Updating row id {} with value {}"</span>, Bytes.toString(updateRes.getRow()), val);
-<a class="jxr_linenumber" name="146" href="#146">146</a>             row.add(famName, colName, Bytes.toBytes(val + 10));
+<a class="jxr_linenumber" name="146" href="#146">146</a>             row.addColumn(famName, colName, Bytes.toBytes(val + 10));
 <a class="jxr_linenumber" name="147" href="#147">147</a>             txTable.put(tx1, row);
 <a class="jxr_linenumber" name="148" href="#148">148</a>             updateRes = tx1Scanner.next();
 <a class="jxr_linenumber" name="149" href="#149">149</a>             count++;
@@ -208,7 +208,7 @@
 <a class="jxr_linenumber" name="198" href="#198">198</a> 
 <a class="jxr_linenumber" name="199" href="#199">199</a>         <em class="jxr_comment">// 0) Start transactions</em>
 <a class="jxr_linenumber" name="200" href="#200">200</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="201" href="#201">201</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="201" href="#201">201</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="202" href="#202">202</a>         Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="203" href="#203">203</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="204" href="#204">204</a> 
@@ -247,12 +247,12 @@
 <a class="jxr_linenumber" name="237" href="#237">237</a> 
 <a class="jxr_linenumber" name="238" href="#238">238</a>         <em class="jxr_comment">// 3) update test set value = 11 where id = 1; -- T1</em>
 <a class="jxr_linenumber" name="239" href="#239">239</a>         Put updateRow1Tx1 = <strong class="jxr_keyword">new</strong> Put(rowId1);
-<a class="jxr_linenumber" name="240" href="#240">240</a>         updateRow1Tx1.add(famName, colName, Bytes.toBytes(<span class="jxr_string">"11"</span>));
+<a class="jxr_linenumber" name="240" href="#240">240</a>         updateRow1Tx1.addColumn(famName, colName, Bytes.toBytes(<span class="jxr_string">"11"</span>));
 <a class="jxr_linenumber" name="241" href="#241">241</a>         txTable.put(tx1, updateRow1Tx1);
 <a class="jxr_linenumber" name="242" href="#242">242</a> 
 <a class="jxr_linenumber" name="243" href="#243">243</a>         <em class="jxr_comment">// 4) update test set value = 11 where id = 1; -- T2</em>
 <a class="jxr_linenumber" name="244" href="#244">244</a>         Put updateRow1Tx2 = <strong class="jxr_keyword">new</strong> Put(rowId1);
-<a class="jxr_linenumber" name="245" href="#245">245</a>         updateRow1Tx2.add(famName, colName, Bytes.toBytes(<span class="jxr_string">"11"</span>));
+<a class="jxr_linenumber" name="245" href="#245">245</a>         updateRow1Tx2.addColumn(famName, colName, Bytes.toBytes(<span class="jxr_string">"11"</span>));
 <a class="jxr_linenumber" name="246" href="#246">246</a>         txTable.put(tx2, updateRow1Tx2);
 <a class="jxr_linenumber" name="247" href="#247">247</a> 
 <a class="jxr_linenumber" name="248" href="#248">248</a>         <em class="jxr_comment">// 5) commit -- T1</em>
@@ -284,7 +284,7 @@
 <a class="jxr_linenumber" name="274" href="#274">274</a> 
 <a class="jxr_linenumber" name="275" href="#275">275</a>         <em class="jxr_comment">// 0) Start transactions</em>
 <a class="jxr_linenumber" name="276" href="#276">276</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="277" href="#277">277</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="277" href="#277">277</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="278" href="#278">278</a>         Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="279" href="#279">279</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="280" href="#280">280</a> 
@@ -339,12 +339,12 @@
 <a class="jxr_linenumber" name="329" href="#329">329</a> 
 <a class="jxr_linenumber" name="330" href="#330">330</a>         <em class="jxr_comment">// 4) update test set value = 12 where id = 1; -- T2</em>
 <a class="jxr_linenumber" name="331" href="#331">331</a>         Put updateRow1Tx2 = <strong class="jxr_keyword">new</strong> Put(rowId1);
-<a class="jxr_linenumber" name="332" href="#332">332</a>         updateRow1Tx2.add(famName, colName, Bytes.toBytes(<span class="jxr_string">"12"</span>));
+<a class="jxr_linenumber" name="332" href="#332">332</a>         updateRow1Tx2.addColumn(famName, colName, Bytes.toBytes(<span class="jxr_string">"12"</span>));
 <a class="jxr_linenumber" name="333" href="#333">333</a>         txTable.put(tx1, updateRow1Tx2);
 <a class="jxr_linenumber" name="334" href="#334">334</a> 
 <a class="jxr_linenumber" name="335" href="#335">335</a>         <em class="jxr_comment">// 5) update test set value = 18 where id = 1; -- T2</em>
 <a class="jxr_linenumber" name="336" href="#336">336</a>         Put updateRow2Tx2 = <strong class="jxr_keyword">new</strong> Put(rowId2);
-<a class="jxr_linenumber" name="337" href="#337">337</a>         updateRow2Tx2.add(famName, colName, Bytes.toBytes(<span class="jxr_string">"18"</span>));
+<a class="jxr_linenumber" name="337" href="#337">337</a>         updateRow2Tx2.addColumn(famName, colName, Bytes.toBytes(<span class="jxr_string">"18"</span>));
 <a class="jxr_linenumber" name="338" href="#338">338</a>         txTable.put(tx2, updateRow2Tx2);
 <a class="jxr_linenumber" name="339" href="#339">339</a> 
 <a class="jxr_linenumber" name="340" href="#340">340</a>         <em class="jxr_comment">// 6) commit -- T2</em>
@@ -384,7 +384,7 @@
 <a class="jxr_linenumber" name="374" href="#374">374</a> 
 <a class="jxr_linenumber" name="375" href="#375">375</a>         <em class="jxr_comment">// 0) Start transactions</em>
 <a class="jxr_linenumber" name="376" href="#376">376</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="377" href="#377">377</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="377" href="#377">377</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="378" href="#378">378</a>         Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="379" href="#379">379</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="380" href="#380">380</a> 
@@ -397,9 +397,9 @@
 <a class="jxr_linenumber" name="387" href="#387">387</a>         <em class="jxr_comment">// 3) update test set value = 12 where id = 1; -- T2</em>
 <a class="jxr_linenumber" name="388" href="#388">388</a>         <em class="jxr_comment">// 4) update test set value = 18 where id = 2; -- T2</em>
 <a class="jxr_linenumber" name="389" href="#389">389</a>         Put updateRow1Tx2 = <strong class="jxr_keyword">new</strong> Put(rowId1);
-<a class="jxr_linenumber" name="390" href="#390">390</a>         updateRow1Tx2.add(famName, colName, Bytes.toBytes(12));
+<a class="jxr_linenumber" name="390" href="#390">390</a>         updateRow1Tx2.addColumn(famName, colName, Bytes.toBytes(12));
 <a class="jxr_linenumber" name="391" href="#391">391</a>         Put updateRow2Tx2 = <strong class="jxr_keyword">new</strong> Put(rowId2);
-<a class="jxr_linenumber" name="392" href="#392">392</a>         updateRow2Tx2.add(famName, colName, Bytes.toBytes(18));
+<a class="jxr_linenumber" name="392" href="#392">392</a>         updateRow2Tx2.addColumn(famName, colName, Bytes.toBytes(18));
 <a class="jxr_linenumber" name="393" href="#393">393</a>         txTable.put(tx2, Arrays.asList(updateRow1Tx2, updateRow2Tx2));
 <a class="jxr_linenumber" name="394" href="#394">394</a> 
 <a class="jxr_linenumber" name="395" href="#395">395</a>         <em class="jxr_comment">// 5) commit; -- T2</em>
@@ -445,7 +445,7 @@
 <a class="jxr_linenumber" name="435" href="#435">435</a> 
 <a class="jxr_linenumber" name="436" href="#436">436</a>         <em class="jxr_comment">// 0) Start transactions</em>
 <a class="jxr_linenumber" name="437" href="#437">437</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="438" href="#438">438</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="438" href="#438">438</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="439" href="#439">439</a>         Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="440" href="#440">440</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="441" href="#441">441</a> 
@@ -502,12 +502,12 @@
 <a class="jxr_linenumber" name="492" href="#492">492</a> 
 <a class="jxr_linenumber" name="493" href="#493">493</a>         <em class="jxr_comment">// 3) update test set value = 11 where id = 1; -- T1</em>
 <a class="jxr_linenumber" name="494" href="#494">494</a>         Put updateRow1Tx1 = <strong class="jxr_keyword">new</strong> Put(rowId1);
-<a class="jxr_linenumber" name="495" href="#495">495</a>         updateRow1Tx1.add(famName, colName, Bytes.toBytes(<span class="jxr_string">"11"</span>));
+<a class="jxr_linenumber" name="495" href="#495">495</a>         updateRow1Tx1.addColumn(famName, colName, Bytes.toBytes(<span class="jxr_string">"11"</span>));
 <a class="jxr_linenumber" name="496" href="#496">496</a>         txTable.put(tx1, updateRow1Tx1);
 <a class="jxr_linenumber" name="497" href="#497">497</a> 
 <a class="jxr_linenumber" name="498" href="#498">498</a>         <em class="jxr_comment">// 4) update test set value = 21 where id = 2; -- T2</em>
 <a class="jxr_linenumber" name="499" href="#499">499</a>         Put updateRow2Tx2 = <strong class="jxr_keyword">new</strong> Put(rowId2);
-<a class="jxr_linenumber" name="500" href="#500">500</a>         updateRow2Tx2.add(famName, colName, Bytes.toBytes(<span class="jxr_string">"21"</span>));
+<a class="jxr_linenumber" name="500" href="#500">500</a>         updateRow2Tx2.addColumn(famName, colName, Bytes.toBytes(<span class="jxr_string">"21"</span>));
 <a class="jxr_linenumber" name="501" href="#501">501</a>         txTable.put(tx2, updateRow2Tx2);
 <a class="jxr_linenumber" name="502" href="#502">502</a> 
 <a class="jxr_linenumber" name="503" href="#503">503</a>         <em class="jxr_comment">// 5) commit; -- T1</em>
@@ -533,7 +533,7 @@
 <a class="jxr_linenumber" name="523" href="#523">523</a> 
 <a class="jxr_linenumber" name="524" href="#524">524</a>         <em class="jxr_comment">// 0) Start transactions</em>
 <a class="jxr_linenumber" name="525" href="#525">525</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="526" href="#526">526</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="526" href="#526">526</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="527" href="#527">527</a>         Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="528" href="#528">528</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="529" href="#529">529</a> 
@@ -552,12 +552,12 @@
 <a class="jxr_linenumber" name="542" href="#542">542</a> 
 <a class="jxr_linenumber" name="543" href="#543">543</a>         <em class="jxr_comment">// 3) insert into test (id, value) values(3, 30); -- T1</em>
 <a class="jxr_linenumber" name="544" href="#544">544</a>         Put insertRow3Tx1 = <strong class="jxr_keyword">new</strong> Put(rowId1);
-<a class="jxr_linenumber" name="545" href="#545">545</a>         insertRow3Tx1.add(famName, colName, Bytes.toBytes(<span class="jxr_string">"30"</span>));
+<a class="jxr_linenumber" name="545" href="#545">545</a>         insertRow3Tx1.addColumn(famName, colName, Bytes.toBytes(<span class="jxr_string">"30"</span>));
 <a class="jxr_linenumber" name="546" href="#546">546</a>         txTable.put(tx1, insertRow3Tx1);
 <a class="jxr_linenumber" name="547" href="#547">547</a> 
 <a class="jxr_linenumber" name="548" href="#548">548</a>         <em class="jxr_comment">// 4) insert into test (id, value) values(4, 42); -- T2</em>
 <a class="jxr_linenumber" name="549" href="#549">549</a>         Put updateRow4Tx2 = <strong class="jxr_keyword">new</strong> Put(rowId2);
-<a class="jxr_linenumber" name="550" href="#550">550</a>         updateRow4Tx2.add(famName, colName, Bytes.toBytes(<span class="jxr_string">"42"</span>));
+<a class="jxr_linenumber" name="550" href="#550">550</a>         updateRow4Tx2.addColumn(famName, colName, Bytes.toBytes(<span class="jxr_string">"42"</span>));
 <a class="jxr_linenumber" name="551" href="#551">551</a>         txTable.put(tx2, updateRow4Tx2);
 <a class="jxr_linenumber" name="552" href="#552">552</a> 
 <a class="jxr_linenumber" name="553" href="#553">553</a>         <em class="jxr_comment">// 5) commit; -- T1</em>
@@ -580,14 +580,14 @@
 <a class="jxr_linenumber" name="570" href="#570">570</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> loadBaseDataOnTestTable(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="571" href="#571">571</a> 
 <a class="jxr_linenumber" name="572" href="#572">572</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="573" href="#573">573</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="573" href="#573">573</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="574" href="#574">574</a> 
 <a class="jxr_linenumber" name="575" href="#575">575</a>         Transaction initializationTx = tm.begin();
 <a class="jxr_linenumber" name="576" href="#576">576</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowId1);
-<a class="jxr_linenumber" name="577" href="#577">577</a>         row1.add(famName, colName, dataValue1);
+<a class="jxr_linenumber" name="577" href="#577">577</a>         row1.addColumn(famName, colName, dataValue1);
 <a class="jxr_linenumber" name="578" href="#578">578</a>         txTable.put(initializationTx, row1);
 <a class="jxr_linenumber" name="579" href="#579">579</a>         Put row2 = <strong class="jxr_keyword">new</strong> Put(rowId2);
-<a class="jxr_linenumber" name="580" href="#580">580</a>         row2.add(famName, colName, dataValue2);
+<a class="jxr_linenumber" name="580" href="#580">580</a>         row2.addColumn(famName, colName, dataValue2);
 <a class="jxr_linenumber" name="581" href="#581">581</a>         txTable.put(initializationTx, row2);
 <a class="jxr_linenumber" name="582" href="#582">582</a> 
 <a class="jxr_linenumber" name="583" href="#583">583</a>         tm.commit(initializationTx);


[45/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/OmidTestBase.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/OmidTestBase.html b/xref-test/org/apache/omid/transaction/OmidTestBase.html
index 4567a05..0597f09 100644
--- a/xref-test/org/apache/omid/transaction/OmidTestBase.html
+++ b/xref-test/org/apache/omid/transaction/OmidTestBase.html
@@ -27,244 +27,252 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.InMemoryCommitTable;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.OmidTableManager;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseTestingUtility;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.MiniHBaseCluster;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTable;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterGroups;
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeGroups;
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> java.io.File;
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> java.lang.reflect.Method;
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.HConstants.HBASE_CLIENT_RETRIES_NUMBER;
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.HConstants.HBASE_CLIENT_RETRIES_NUMBER;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.File;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.lang.reflect.Method;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Cell;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellUtil;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseTestingUtility;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.MiniHBaseCluster;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Admin;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HBaseAdmin;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.HBaseShims;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.TestUtils;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.InMemoryCommitTable;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tools.hbase.OmidTableManager;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOMockModule;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServer;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.TSOServerConfig;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.OmidClientConfiguration;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.TSOClient;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterGroups;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.AfterMethod;
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeGroups;
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
 <a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(OmidTestBase.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">static</strong> HBaseTestingUtility hBaseUtils;
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> MiniHBaseCluster hbaseCluster;
-<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">static</strong> Configuration hbaseConf;
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_TABLE = <span class="jxr_string">"test"</span>;
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY = <span class="jxr_string">"data"</span>;
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY2 = <span class="jxr_string">"data2"</span>;
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> HBaseCommitTableConfig hBaseCommitTableConfig;
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>      @BeforeMethod(alwaysRun = <strong class="jxr_keyword">true</strong>)
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeClass(Method method) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="76" href="#76">76</a>          Thread.currentThread().setName(<span class="jxr_string">"UnitTest-"</span> + method.getName());
-<a class="jxr_linenumber" name="77" href="#77">77</a>      }
-<a class="jxr_linenumber" name="78" href="#78">78</a>  
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Guice;
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> com.google.inject.Injector;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(OmidTestBase.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">static</strong> HBaseTestingUtility hBaseUtils;
+<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> MiniHBaseCluster hbaseCluster;
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">static</strong> Configuration hbaseConf;
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">static</strong> Connection connection;
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_TABLE = <span class="jxr_string">"test"</span>;
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY = <span class="jxr_string">"data"</span>;
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FAMILY2 = <span class="jxr_string">"data2"</span>;
+<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">private</strong> HBaseCommitTableConfig hBaseCommitTableConfig;
 <a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>      @BeforeGroups(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeGroups(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <em class="jxr_comment">// TSO Setup</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>          TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="84" href="#84">84</a>          tsoConfig.setPort(1234);
-<a class="jxr_linenumber" name="85" href="#85">85</a>          tsoConfig.setConflictMapSize(1000);
-<a class="jxr_linenumber" name="86" href="#86">86</a>          Injector injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig));
-<a class="jxr_linenumber" name="87" href="#87">87</a>          LOG.info(<span class="jxr_string">"Starting TSO"</span>);
-<a class="jxr_linenumber" name="88" href="#88">88</a>          TSOServer tso = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="89" href="#89">89</a>          hBaseCommitTableConfig = injector.getInstance(HBaseCommitTableConfig.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="90" href="#90">90</a>          HBaseTimestampStorageConfig hBaseTimestampStorageConfig = injector.getInstance(HBaseTimestampStorageConfig.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="91" href="#91">91</a>          tso.startAndWait();
-<a class="jxr_linenumber" name="92" href="#92">92</a>          TestUtils.waitForSocketListening(<span class="jxr_string">"localhost"</span>, 1234, 100);
-<a class="jxr_linenumber" name="93" href="#93">93</a>          LOG.info(<span class="jxr_string">"Finished loading TSO"</span>);
-<a class="jxr_linenumber" name="94" href="#94">94</a>          context.setAttribute(<span class="jxr_string">"tso"</span>, tso);
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          OmidClientConfiguration clientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
-<a class="jxr_linenumber" name="97" href="#97">97</a>          clientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
-<a class="jxr_linenumber" name="98" href="#98">98</a>          context.setAttribute(<span class="jxr_string">"clientConf"</span>, clientConf);
-<a class="jxr_linenumber" name="99" href="#99">99</a>  
-<a class="jxr_linenumber" name="100" href="#100">100</a>         InMemoryCommitTable commitTable = (InMemoryCommitTable) injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="101" href="#101">101</a>         context.setAttribute(<span class="jxr_string">"commitTable"</span>, commitTable);
-<a class="jxr_linenumber" name="102" href="#102">102</a> 
-<a class="jxr_linenumber" name="103" href="#103">103</a>         <em class="jxr_comment">// Create the associated Handler</em>
-<a class="jxr_linenumber" name="104" href="#104">104</a>         TSOClient client = TSOClient.newInstance(clientConf);
-<a class="jxr_linenumber" name="105" href="#105">105</a>         context.setAttribute(<span class="jxr_string">"client"</span>, client);
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="108" href="#108">108</a>         <em class="jxr_comment">// HBase setup</em>
-<a class="jxr_linenumber" name="109" href="#109">109</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a>         LOG.info(<span class="jxr_string">"Creating HBase minicluster"</span>);
-<a class="jxr_linenumber" name="111" href="#111">111</a>         hbaseConf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="112" href="#112">112</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.hregion.memstore.flush.size"</span>, 10_000 * 1024);
-<a class="jxr_linenumber" name="113" href="#113">113</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.regionserver.nbreservationblocks"</span>, 1);
-<a class="jxr_linenumber" name="114" href="#114">114</a>         hbaseConf.setInt(HBASE_CLIENT_RETRIES_NUMBER, 3);
-<a class="jxr_linenumber" name="115" href="#115">115</a> 
-<a class="jxr_linenumber" name="116" href="#116">116</a>         File tempFile = File.createTempFile(<span class="jxr_string">"OmidTest"</span>, <span class="jxr_string">""</span>);
-<a class="jxr_linenumber" name="117" href="#117">117</a>         tempFile.deleteOnExit();
-<a class="jxr_linenumber" name="118" href="#118">118</a>         hbaseConf.set(<span class="jxr_string">"hbase.rootdir"</span>, tempFile.getAbsolutePath());
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>         hBaseUtils = <strong class="jxr_keyword">new</strong> HBaseTestingUtility(hbaseConf);
-<a class="jxr_linenumber" name="121" href="#121">121</a>         hbaseCluster = hBaseUtils.startMiniCluster(1);
-<a class="jxr_linenumber" name="122" href="#122">122</a>         hBaseUtils.createTable(Bytes.toBytes(hBaseTimestampStorageConfig.getTableName()),
-<a class="jxr_linenumber" name="123" href="#123">123</a>                                <strong class="jxr_keyword">new</strong> byte[][]{hBaseTimestampStorageConfig.getFamilyName().getBytes()},
-<a class="jxr_linenumber" name="124" href="#124">124</a>                                Integer.MAX_VALUE);
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>         createTestTable();
-<a class="jxr_linenumber" name="127" href="#127">127</a>         createCommitTable();
-<a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>         LOG.info(<span class="jxr_string">"HBase minicluster is up"</span>);
-<a class="jxr_linenumber" name="130" href="#130">130</a>     }
-<a class="jxr_linenumber" name="131" href="#131">131</a> 
-<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createTestTable() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="133" href="#133">133</a>         HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
-<a class="jxr_linenumber" name="134" href="#134">134</a>         HTableDescriptor test_table_desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(TableName.valueOf(TEST_TABLE));
-<a class="jxr_linenumber" name="135" href="#135">135</a>         HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(TEST_FAMILY);
-<a class="jxr_linenumber" name="136" href="#136">136</a>         HColumnDescriptor datafam2 = <strong class="jxr_keyword">new</strong> HColumnDescriptor(TEST_FAMILY2);
-<a class="jxr_linenumber" name="137" href="#137">137</a>         datafam.setMaxVersions(Integer.MAX_VALUE);
-<a class="jxr_linenumber" name="138" href="#138">138</a>         datafam2.setMaxVersions(Integer.MAX_VALUE);
-<a class="jxr_linenumber" name="139" href="#139">139</a>         test_table_desc.addFamily(datafam);
-<a class="jxr_linenumber" name="140" href="#140">140</a>         test_table_desc.addFamily(datafam2);
-<a class="jxr_linenumber" name="141" href="#141">141</a>         admin.createTable(test_table_desc);
-<a class="jxr_linenumber" name="142" href="#142">142</a>     }
-<a class="jxr_linenumber" name="143" href="#143">143</a> 
-<a class="jxr_linenumber" name="144" href="#144">144</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createCommitTable() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="145" href="#145">145</a>         String[] args = <strong class="jxr_keyword">new</strong> String[]{OmidTableManager.COMMIT_TABLE_COMMAND_NAME, <span class="jxr_string">"-numRegions"</span>, <span class="jxr_string">"1"</span>};
-<a class="jxr_linenumber" name="146" href="#146">146</a>         OmidTableManager omidTableManager = <strong class="jxr_keyword">new</strong> OmidTableManager(args);
-<a class="jxr_linenumber" name="147" href="#147">147</a>         omidTableManager.executeActionsOnHBase(hbaseConf);
+<a class="jxr_linenumber" name="80" href="#80">80</a>      @BeforeMethod(alwaysRun = <strong class="jxr_keyword">true</strong>)
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeClass(Method method) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="82" href="#82">82</a>          Thread.currentThread().setName(<span class="jxr_string">"UnitTest-"</span> + method.getName());
+<a class="jxr_linenumber" name="83" href="#83">83</a>      }
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>  
+<a class="jxr_linenumber" name="86" href="#86">86</a>      @BeforeGroups(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeGroups(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <em class="jxr_comment">// TSO Setup</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>          TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="90" href="#90">90</a>          tsoConfig.setPort(1234);
+<a class="jxr_linenumber" name="91" href="#91">91</a>          tsoConfig.setConflictMapSize(1000);
+<a class="jxr_linenumber" name="92" href="#92">92</a>          Injector injector = Guice.createInjector(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/TSOMockModule.html">TSOMockModule</a>(tsoConfig));
+<a class="jxr_linenumber" name="93" href="#93">93</a>          LOG.info(<span class="jxr_string">"Starting TSO"</span>);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          TSOServer tso = injector.getInstance(TSOServer.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="95" href="#95">95</a>          hBaseCommitTableConfig = injector.getInstance(HBaseCommitTableConfig.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>          HBaseTimestampStorageConfig hBaseTimestampStorageConfig = injector.getInstance(HBaseTimestampStorageConfig.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="97" href="#97">97</a>          tso.startAndWait();
+<a class="jxr_linenumber" name="98" href="#98">98</a>          TestUtils.waitForSocketListening(<span class="jxr_string">"localhost"</span>, 1234, 100);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          LOG.info(<span class="jxr_string">"Finished loading TSO"</span>);
+<a class="jxr_linenumber" name="100" href="#100">100</a>         context.setAttribute(<span class="jxr_string">"tso"</span>, tso);
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>         OmidClientConfiguration clientConf = <strong class="jxr_keyword">new</strong> OmidClientConfiguration();
+<a class="jxr_linenumber" name="103" href="#103">103</a>         clientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
+<a class="jxr_linenumber" name="104" href="#104">104</a>         context.setAttribute(<span class="jxr_string">"clientConf"</span>, clientConf);
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         InMemoryCommitTable commitTable = (InMemoryCommitTable) injector.getInstance(CommitTable.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="107" href="#107">107</a>         context.setAttribute(<span class="jxr_string">"commitTable"</span>, commitTable);
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <em class="jxr_comment">// Create the associated Handler</em>
+<a class="jxr_linenumber" name="110" href="#110">110</a>         TSOClient client = TSOClient.newInstance(clientConf);
+<a class="jxr_linenumber" name="111" href="#111">111</a>         context.setAttribute(<span class="jxr_string">"client"</span>, client);
+<a class="jxr_linenumber" name="112" href="#112">112</a> 
+<a class="jxr_linenumber" name="113" href="#113">113</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="114" href="#114">114</a>         <em class="jxr_comment">// HBase setup</em>
+<a class="jxr_linenumber" name="115" href="#115">115</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="116" href="#116">116</a>         LOG.info(<span class="jxr_string">"Creating HBase minicluster"</span>);
+<a class="jxr_linenumber" name="117" href="#117">117</a>         hbaseConf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="118" href="#118">118</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.hregion.memstore.flush.size"</span>, 10_000 * 1024);
+<a class="jxr_linenumber" name="119" href="#119">119</a>         hbaseConf.setInt(<span class="jxr_string">"hbase.regionserver.nbreservationblocks"</span>, 1);
+<a class="jxr_linenumber" name="120" href="#120">120</a>         hbaseConf.setInt(HBASE_CLIENT_RETRIES_NUMBER, 3);
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>         File tempFile = File.createTempFile(<span class="jxr_string">"OmidTest"</span>, <span class="jxr_string">""</span>);
+<a class="jxr_linenumber" name="123" href="#123">123</a>         tempFile.deleteOnExit();
+<a class="jxr_linenumber" name="124" href="#124">124</a>         hbaseConf.set(<span class="jxr_string">"hbase.rootdir"</span>, tempFile.getAbsolutePath());
+<a class="jxr_linenumber" name="125" href="#125">125</a>         hbaseConf.setBoolean(<span class="jxr_string">"hbase.localcluster.assign.random.ports"</span>,<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="126" href="#126">126</a>         hBaseUtils = <strong class="jxr_keyword">new</strong> HBaseTestingUtility(hbaseConf);
+<a class="jxr_linenumber" name="127" href="#127">127</a>         hbaseCluster = hBaseUtils.startMiniCluster(1);
+<a class="jxr_linenumber" name="128" href="#128">128</a>         connection = ConnectionFactory.createConnection(hbaseConf);
+<a class="jxr_linenumber" name="129" href="#129">129</a>         hBaseUtils.createTable(TableName.valueOf(hBaseTimestampStorageConfig.getTableName()),
+<a class="jxr_linenumber" name="130" href="#130">130</a>                 <strong class="jxr_keyword">new</strong> byte[][]{hBaseTimestampStorageConfig.getFamilyName().getBytes()},
+<a class="jxr_linenumber" name="131" href="#131">131</a>                 Integer.MAX_VALUE);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         createTestTable();
+<a class="jxr_linenumber" name="133" href="#133">133</a>         createCommitTable();
+<a class="jxr_linenumber" name="134" href="#134">134</a> 
+<a class="jxr_linenumber" name="135" href="#135">135</a>         LOG.info(<span class="jxr_string">"HBase minicluster is up"</span>);
+<a class="jxr_linenumber" name="136" href="#136">136</a>     }
+<a class="jxr_linenumber" name="137" href="#137">137</a> 
+<a class="jxr_linenumber" name="138" href="#138">138</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createTestTable() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="139" href="#139">139</a>         HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
+<a class="jxr_linenumber" name="140" href="#140">140</a>         HTableDescriptor test_table_desc = <strong class="jxr_keyword">new</strong> HTableDescriptor(TableName.valueOf(TEST_TABLE));
+<a class="jxr_linenumber" name="141" href="#141">141</a>         HColumnDescriptor datafam = <strong class="jxr_keyword">new</strong> HColumnDescriptor(TEST_FAMILY);
+<a class="jxr_linenumber" name="142" href="#142">142</a>         HColumnDescriptor datafam2 = <strong class="jxr_keyword">new</strong> HColumnDescriptor(TEST_FAMILY2);
+<a class="jxr_linenumber" name="143" href="#143">143</a>         datafam.setMaxVersions(Integer.MAX_VALUE);
+<a class="jxr_linenumber" name="144" href="#144">144</a>         datafam2.setMaxVersions(Integer.MAX_VALUE);
+<a class="jxr_linenumber" name="145" href="#145">145</a>         test_table_desc.addFamily(datafam);
+<a class="jxr_linenumber" name="146" href="#146">146</a>         test_table_desc.addFamily(datafam2);
+<a class="jxr_linenumber" name="147" href="#147">147</a>         admin.createTable(test_table_desc);
 <a class="jxr_linenumber" name="148" href="#148">148</a>     }
 <a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a> 
-<a class="jxr_linenumber" name="151" href="#151">151</a>     <strong class="jxr_keyword">private</strong> TSOServer getTSO(ITestContext context) {
-<a class="jxr_linenumber" name="152" href="#152">152</a>         <strong class="jxr_keyword">return</strong> (TSOServer) context.getAttribute(<span class="jxr_string">"tso"</span>);
-<a class="jxr_linenumber" name="153" href="#153">153</a>     }
-<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createCommitTable() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="151" href="#151">151</a>         String[] args = <strong class="jxr_keyword">new</strong> String[]{OmidTableManager.COMMIT_TABLE_COMMAND_NAME, <span class="jxr_string">"-numRegions"</span>, <span class="jxr_string">"1"</span>};
+<a class="jxr_linenumber" name="152" href="#152">152</a>         OmidTableManager omidTableManager = <strong class="jxr_keyword">new</strong> OmidTableManager(args);
+<a class="jxr_linenumber" name="153" href="#153">153</a>         omidTableManager.executeActionsOnHBase(hbaseConf);
+<a class="jxr_linenumber" name="154" href="#154">154</a>     }
 <a class="jxr_linenumber" name="155" href="#155">155</a> 
-<a class="jxr_linenumber" name="156" href="#156">156</a>     TSOClient getClient(ITestContext context) {
-<a class="jxr_linenumber" name="157" href="#157">157</a>         <strong class="jxr_keyword">return</strong> (TSOClient) context.getAttribute(<span class="jxr_string">"client"</span>);
-<a class="jxr_linenumber" name="158" href="#158">158</a>     }
-<a class="jxr_linenumber" name="159" href="#159">159</a> 
-<a class="jxr_linenumber" name="160" href="#160">160</a>     InMemoryCommitTable getCommitTable(ITestContext context) {
-<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">return</strong> (InMemoryCommitTable) context.getAttribute(<span class="jxr_string">"commitTable"</span>);
-<a class="jxr_linenumber" name="162" href="#162">162</a>     }
-<a class="jxr_linenumber" name="163" href="#163">163</a> 
-<a class="jxr_linenumber" name="164" href="#164">164</a>     <strong class="jxr_keyword">protected</strong> TransactionManager newTransactionManager(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">return</strong> newTransactionManager(context, getClient(context));
-<a class="jxr_linenumber" name="166" href="#166">166</a>     }
-<a class="jxr_linenumber" name="167" href="#167">167</a> 
-<a class="jxr_linenumber" name="168" href="#168">168</a>     <strong class="jxr_keyword">protected</strong> TransactionManager newTransactionManager(ITestContext context, PostCommitActions postCommitActions) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="169" href="#169">169</a>         HBaseOmidClientConfiguration clientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="170" href="#170">170</a>         clientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
-<a class="jxr_linenumber" name="171" href="#171">171</a>         clientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="172" href="#172">172</a>         <strong class="jxr_keyword">return</strong> HBaseTransactionManager.builder(clientConf)
-<a class="jxr_linenumber" name="173" href="#173">173</a>                 .postCommitter(postCommitActions)
-<a class="jxr_linenumber" name="174" href="#174">174</a>                 .commitTableClient(getCommitTable(context).getClient())
-<a class="jxr_linenumber" name="175" href="#175">175</a>                 .tsoClient(getClient(context)).build();
-<a class="jxr_linenumber" name="176" href="#176">176</a>     }
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">protected</strong> TransactionManager newTransactionManager(ITestContext context, TSOClient tsoClient) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="179" href="#179">179</a>         HBaseOmidClientConfiguration clientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="180" href="#180">180</a>         clientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
-<a class="jxr_linenumber" name="181" href="#181">181</a>         clientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="182" href="#182">182</a>         <strong class="jxr_keyword">return</strong> HBaseTransactionManager.builder(clientConf)
-<a class="jxr_linenumber" name="183" href="#183">183</a>                 .commitTableClient(getCommitTable(context).getClient())
-<a class="jxr_linenumber" name="184" href="#184">184</a>                 .tsoClient(tsoClient).build();
-<a class="jxr_linenumber" name="185" href="#185">185</a>     }
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>     <strong class="jxr_keyword">protected</strong> TransactionManager newTransactionManager(ITestContext context, CommitTable.Client commitTableClient)
-<a class="jxr_linenumber" name="188" href="#188">188</a>             <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="189" href="#189">189</a>         HBaseOmidClientConfiguration clientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
-<a class="jxr_linenumber" name="190" href="#190">190</a>         clientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
-<a class="jxr_linenumber" name="191" href="#191">191</a>         clientConf.setHBaseConfiguration(hbaseConf);
-<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">return</strong> HBaseTransactionManager.builder(clientConf)
-<a class="jxr_linenumber" name="193" href="#193">193</a>                 .commitTableClient(commitTableClient)
-<a class="jxr_linenumber" name="194" href="#194">194</a>                 .tsoClient(getClient(context)).build();
-<a class="jxr_linenumber" name="195" href="#195">195</a>     }
-<a class="jxr_linenumber" name="196" href="#196">196</a> 
-<a class="jxr_linenumber" name="197" href="#197">197</a>     @AfterGroups(groups = <span class="jxr_string">"sharedHBase"</span>)
-<a class="jxr_linenumber" name="198" href="#198">198</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterGroups(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="199" href="#199">199</a>         LOG.info(<span class="jxr_string">"Tearing down OmidTestBase..."</span>);
-<a class="jxr_linenumber" name="200" href="#200">200</a>         <strong class="jxr_keyword">if</strong> (hbaseCluster != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="201" href="#201">201</a>             hBaseUtils.shutdownMiniCluster();
-<a class="jxr_linenumber" name="202" href="#202">202</a>         }
-<a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>         getClient(context).close().get();
-<a class="jxr_linenumber" name="205" href="#205">205</a>         getTSO(context).stopAndWait();
-<a class="jxr_linenumber" name="206" href="#206">206</a>         TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, 1234, 1000);
-<a class="jxr_linenumber" name="207" href="#207">207</a>     }
-<a class="jxr_linenumber" name="208" href="#208">208</a> 
-<a class="jxr_linenumber" name="209" href="#209">209</a>     @AfterMethod(groups = <span class="jxr_string">"sharedHBase"</span>, timeOut = 60_000)
-<a class="jxr_linenumber" name="210" href="#210">210</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterMethod() {
-<a class="jxr_linenumber" name="211" href="#211">211</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="212" href="#212">212</a>             LOG.info(<span class="jxr_string">"tearing Down"</span>);
-<a class="jxr_linenumber" name="213" href="#213">213</a>             HBaseAdmin admin = hBaseUtils.getHBaseAdmin();
-<a class="jxr_linenumber" name="214" href="#214">214</a>             deleteTable(admin, TableName.valueOf(TEST_TABLE));
-<a class="jxr_linenumber" name="215" href="#215">215</a>             createTestTable();
-<a class="jxr_linenumber" name="216" href="#216">216</a>             deleteTable(admin, TableName.valueOf(hBaseCommitTableConfig.getTableName()));
-<a class="jxr_linenumber" name="217" href="#217">217</a>             createCommitTable();
-<a class="jxr_linenumber" name="218" href="#218">218</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="219" href="#219">219</a>             LOG.error(<span class="jxr_string">"Error tearing down"</span>, e);
-<a class="jxr_linenumber" name="220" href="#220">220</a>         }
-<a class="jxr_linenumber" name="221" href="#221">221</a>     }
-<a class="jxr_linenumber" name="222" href="#222">222</a> 
-<a class="jxr_linenumber" name="223" href="#223">223</a>     <strong class="jxr_keyword">void</strong> deleteTable(HBaseAdmin admin, TableName tableName) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="224" href="#224">224</a>         <strong class="jxr_keyword">if</strong> (admin.tableExists(tableName)) {
-<a class="jxr_linenumber" name="225" href="#225">225</a>             <strong class="jxr_keyword">if</strong> (admin.isTableDisabled(tableName)) {
-<a class="jxr_linenumber" name="226" href="#226">226</a>                 admin.deleteTable(tableName);
-<a class="jxr_linenumber" name="227" href="#227">227</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="228" href="#228">228</a>                 admin.disableTable(tableName);
-<a class="jxr_linenumber" name="229" href="#229">229</a>                 admin.deleteTable(tableName);
-<a class="jxr_linenumber" name="230" href="#230">230</a>             }
-<a class="jxr_linenumber" name="231" href="#231">231</a>         }
-<a class="jxr_linenumber" name="232" href="#232">232</a>     }
-<a class="jxr_linenumber" name="233" href="#233">233</a> 
-<a class="jxr_linenumber" name="234" href="#234">234</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> verifyValue(byte[] tableName, byte[] row,
-<a class="jxr_linenumber" name="235" href="#235">235</a>                                byte[] fam, byte[] col, byte[] value) {
-<a class="jxr_linenumber" name="236" href="#236">236</a> 
-<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">try</strong> (HTable table = <strong class="jxr_keyword">new</strong> HTable(hbaseConf, tableName)) {
-<a class="jxr_linenumber" name="238" href="#238">238</a>             Get g = <strong class="jxr_keyword">new</strong> Get(row).setMaxVersions(1);
-<a class="jxr_linenumber" name="239" href="#239">239</a>             Result r = table.get(g);
-<a class="jxr_linenumber" name="240" href="#240">240</a>             Cell cell = r.getColumnLatestCell(fam, col);
+<a class="jxr_linenumber" name="156" href="#156">156</a> 
+<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">private</strong> TSOServer getTSO(ITestContext context) {
+<a class="jxr_linenumber" name="158" href="#158">158</a>         <strong class="jxr_keyword">return</strong> (TSOServer) context.getAttribute(<span class="jxr_string">"tso"</span>);
+<a class="jxr_linenumber" name="159" href="#159">159</a>     }
+<a class="jxr_linenumber" name="160" href="#160">160</a> 
+<a class="jxr_linenumber" name="161" href="#161">161</a> 
+<a class="jxr_linenumber" name="162" href="#162">162</a>     TSOClient getClient(ITestContext context) {
+<a class="jxr_linenumber" name="163" href="#163">163</a>         <strong class="jxr_keyword">return</strong> (TSOClient) context.getAttribute(<span class="jxr_string">"client"</span>);
+<a class="jxr_linenumber" name="164" href="#164">164</a>     }
+<a class="jxr_linenumber" name="165" href="#165">165</a> 
+<a class="jxr_linenumber" name="166" href="#166">166</a>     InMemoryCommitTable getCommitTable(ITestContext context) {
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">return</strong> (InMemoryCommitTable) context.getAttribute(<span class="jxr_string">"commitTable"</span>);
+<a class="jxr_linenumber" name="168" href="#168">168</a>     }
+<a class="jxr_linenumber" name="169" href="#169">169</a> 
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">protected</strong> TransactionManager newTransactionManager(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">return</strong> newTransactionManager(context, getClient(context));
+<a class="jxr_linenumber" name="172" href="#172">172</a>     }
+<a class="jxr_linenumber" name="173" href="#173">173</a> 
+<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">protected</strong> TransactionManager newTransactionManager(ITestContext context, PostCommitActions postCommitActions) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="175" href="#175">175</a>         HBaseOmidClientConfiguration clientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="176" href="#176">176</a>         clientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         clientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="178" href="#178">178</a>         <strong class="jxr_keyword">return</strong> HBaseTransactionManager.builder(clientConf)
+<a class="jxr_linenumber" name="179" href="#179">179</a>                 .postCommitter(postCommitActions)
+<a class="jxr_linenumber" name="180" href="#180">180</a>                 .commitTableClient(getCommitTable(context).getClient())
+<a class="jxr_linenumber" name="181" href="#181">181</a>                 .tsoClient(getClient(context)).build();
+<a class="jxr_linenumber" name="182" href="#182">182</a>     }
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>     <strong class="jxr_keyword">protected</strong> TransactionManager newTransactionManager(ITestContext context, TSOClient tsoClient) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="185" href="#185">185</a>         HBaseOmidClientConfiguration clientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="186" href="#186">186</a>         clientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
+<a class="jxr_linenumber" name="187" href="#187">187</a>         clientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="188" href="#188">188</a>         <strong class="jxr_keyword">return</strong> HBaseTransactionManager.builder(clientConf)
+<a class="jxr_linenumber" name="189" href="#189">189</a>                 .commitTableClient(getCommitTable(context).getClient())
+<a class="jxr_linenumber" name="190" href="#190">190</a>                 .tsoClient(tsoClient).build();
+<a class="jxr_linenumber" name="191" href="#191">191</a>     }
+<a class="jxr_linenumber" name="192" href="#192">192</a> 
+<a class="jxr_linenumber" name="193" href="#193">193</a>     <strong class="jxr_keyword">protected</strong> TransactionManager newTransactionManager(ITestContext context, CommitTable.Client commitTableClient)
+<a class="jxr_linenumber" name="194" href="#194">194</a>             <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="195" href="#195">195</a>         HBaseOmidClientConfiguration clientConf = <strong class="jxr_keyword">new</strong> HBaseOmidClientConfiguration();
+<a class="jxr_linenumber" name="196" href="#196">196</a>         clientConf.setConnectionString(<span class="jxr_string">"localhost:1234"</span>);
+<a class="jxr_linenumber" name="197" href="#197">197</a>         clientConf.setHBaseConfiguration(hbaseConf);
+<a class="jxr_linenumber" name="198" href="#198">198</a>         <strong class="jxr_keyword">return</strong> HBaseTransactionManager.builder(clientConf)
+<a class="jxr_linenumber" name="199" href="#199">199</a>                 .commitTableClient(commitTableClient)
+<a class="jxr_linenumber" name="200" href="#200">200</a>                 .tsoClient(getClient(context)).build();
+<a class="jxr_linenumber" name="201" href="#201">201</a>     }
+<a class="jxr_linenumber" name="202" href="#202">202</a> 
+<a class="jxr_linenumber" name="203" href="#203">203</a>     @AfterGroups(groups = <span class="jxr_string">"sharedHBase"</span>)
+<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterGroups(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="205" href="#205">205</a>         LOG.info(<span class="jxr_string">"Tearing down OmidTestBase..."</span>);
+<a class="jxr_linenumber" name="206" href="#206">206</a>         <strong class="jxr_keyword">if</strong> (hbaseCluster != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="207" href="#207">207</a>             hBaseUtils.shutdownMiniCluster();
+<a class="jxr_linenumber" name="208" href="#208">208</a>         }
+<a class="jxr_linenumber" name="209" href="#209">209</a> 
+<a class="jxr_linenumber" name="210" href="#210">210</a>         getClient(context).close().get();
+<a class="jxr_linenumber" name="211" href="#211">211</a>         getTSO(context).stopAndWait();
+<a class="jxr_linenumber" name="212" href="#212">212</a>         TestUtils.waitForSocketNotListening(<span class="jxr_string">"localhost"</span>, 1234, 1000);
+<a class="jxr_linenumber" name="213" href="#213">213</a>     }
+<a class="jxr_linenumber" name="214" href="#214">214</a> 
+<a class="jxr_linenumber" name="215" href="#215">215</a>     @AfterMethod(groups = <span class="jxr_string">"sharedHBase"</span>, timeOut = 60_000)
+<a class="jxr_linenumber" name="216" href="#216">216</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> afterMethod() {
+<a class="jxr_linenumber" name="217" href="#217">217</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="218" href="#218">218</a>             LOG.info(<span class="jxr_string">"tearing Down"</span>);
+<a class="jxr_linenumber" name="219" href="#219">219</a>             Admin admin = hBaseUtils.getHBaseAdmin();
+<a class="jxr_linenumber" name="220" href="#220">220</a>             deleteTable(admin, TableName.valueOf(TEST_TABLE));
+<a class="jxr_linenumber" name="221" href="#221">221</a>             createTestTable();
+<a class="jxr_linenumber" name="222" href="#222">222</a>             <strong class="jxr_keyword">if</strong> (hBaseCommitTableConfig != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="223" href="#223">223</a>                 deleteTable(admin, TableName.valueOf(hBaseCommitTableConfig.getTableName()));
+<a class="jxr_linenumber" name="224" href="#224">224</a>             }
+<a class="jxr_linenumber" name="225" href="#225">225</a>             createCommitTable();
+<a class="jxr_linenumber" name="226" href="#226">226</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="227" href="#227">227</a>             LOG.error(<span class="jxr_string">"Error tearing down"</span>, e);
+<a class="jxr_linenumber" name="228" href="#228">228</a>         }
+<a class="jxr_linenumber" name="229" href="#229">229</a>     }
+<a class="jxr_linenumber" name="230" href="#230">230</a> 
+<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">void</strong> deleteTable(Admin admin, TableName tableName) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="232" href="#232">232</a>         <strong class="jxr_keyword">if</strong> (admin.tableExists(tableName)) {
+<a class="jxr_linenumber" name="233" href="#233">233</a>             <strong class="jxr_keyword">if</strong> (admin.isTableDisabled(tableName)) {
+<a class="jxr_linenumber" name="234" href="#234">234</a>                 admin.deleteTable(tableName);
+<a class="jxr_linenumber" name="235" href="#235">235</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="236" href="#236">236</a>                 admin.disableTable(tableName);
+<a class="jxr_linenumber" name="237" href="#237">237</a>                 admin.deleteTable(tableName);
+<a class="jxr_linenumber" name="238" href="#238">238</a>             }
+<a class="jxr_linenumber" name="239" href="#239">239</a>         }
+<a class="jxr_linenumber" name="240" href="#240">240</a>     }
 <a class="jxr_linenumber" name="241" href="#241">241</a> 
-<a class="jxr_linenumber" name="242" href="#242">242</a>             <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
-<a class="jxr_linenumber" name="243" href="#243">243</a>                 LOG.trace(<span class="jxr_string">"Value for "</span> + Bytes.toString(tableName) + <span class="jxr_string">":"</span>
-<a class="jxr_linenumber" name="244" href="#244">244</a>                                   + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam)
-<a class="jxr_linenumber" name="245" href="#245">245</a>                                   + Bytes.toString(col) + <span class="jxr_string">"=&gt;"</span> + Bytes.toString(CellUtil.cloneValue(cell))
-<a class="jxr_linenumber" name="246" href="#246">246</a>                                   + <span class="jxr_string">" ("</span> + Bytes.toString(value) + <span class="jxr_string">" expected)"</span>);
-<a class="jxr_linenumber" name="247" href="#247">247</a>             }
-<a class="jxr_linenumber" name="248" href="#248">248</a> 
-<a class="jxr_linenumber" name="249" href="#249">249</a>             <strong class="jxr_keyword">return</strong> Bytes.equals(CellUtil.cloneValue(cell), value);
-<a class="jxr_linenumber" name="250" href="#250">250</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="251" href="#251">251</a>             LOG.error(<span class="jxr_string">"Error reading row "</span> + Bytes.toString(tableName) + <span class="jxr_string">":"</span>
-<a class="jxr_linenumber" name="252" href="#252">252</a>                               + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam)
-<a class="jxr_linenumber" name="253" href="#253">253</a>                               + Bytes.toString(col), e);
-<a class="jxr_linenumber" name="254" href="#254">254</a>             <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="255" href="#255">255</a>         }
-<a class="jxr_linenumber" name="256" href="#256">256</a>     }
-<a class="jxr_linenumber" name="257" href="#257">257</a> }
+<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> verifyValue(Table table, byte[] row,
+<a class="jxr_linenumber" name="243" href="#243">243</a>                                byte[] fam, byte[] col, byte[] value) {
+<a class="jxr_linenumber" name="244" href="#244">244</a> 
+<a class="jxr_linenumber" name="245" href="#245">245</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="246" href="#246">246</a>             Get g = <strong class="jxr_keyword">new</strong> Get(row).setMaxVersions(1);
+<a class="jxr_linenumber" name="247" href="#247">247</a>             Result r = table.get(g);
+<a class="jxr_linenumber" name="248" href="#248">248</a>             Cell cell = r.getColumnLatestCell(fam, col);
+<a class="jxr_linenumber" name="249" href="#249">249</a> 
+<a class="jxr_linenumber" name="250" href="#250">250</a>             <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
+<a class="jxr_linenumber" name="251" href="#251">251</a>                 LOG.trace(<span class="jxr_string">"Value for "</span> + table.getName().getNameAsString() + <span class="jxr_string">":"</span>
+<a class="jxr_linenumber" name="252" href="#252">252</a>                                   + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam)
+<a class="jxr_linenumber" name="253" href="#253">253</a>                                   + Bytes.toString(col) + <span class="jxr_string">"=&gt;"</span> + Bytes.toString(CellUtil.cloneValue(cell))
+<a class="jxr_linenumber" name="254" href="#254">254</a>                                   + <span class="jxr_string">" ("</span> + Bytes.toString(value) + <span class="jxr_string">" expected)"</span>);
+<a class="jxr_linenumber" name="255" href="#255">255</a>             }
+<a class="jxr_linenumber" name="256" href="#256">256</a> 
+<a class="jxr_linenumber" name="257" href="#257">257</a>             <strong class="jxr_keyword">return</strong> Bytes.equals(CellUtil.cloneValue(cell), value);
+<a class="jxr_linenumber" name="258" href="#258">258</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="259" href="#259">259</a>             LOG.error(<span class="jxr_string">"Error reading row "</span> + table.getName().getNameAsString() + <span class="jxr_string">":"</span>
+<a class="jxr_linenumber" name="260" href="#260">260</a>                               + Bytes.toString(row) + <span class="jxr_string">":"</span> + Bytes.toString(fam)
+<a class="jxr_linenumber" name="261" href="#261">261</a>                               + Bytes.toString(col), e);
+<a class="jxr_linenumber" name="262" href="#262">262</a>             <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="263" href="#263">263</a>         }
+<a class="jxr_linenumber" name="264" href="#264">264</a>     }
+<a class="jxr_linenumber" name="265" href="#265">265</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TSOForHBaseCompactorTestModule.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TSOForHBaseCompactorTestModule.html b/xref-test/org/apache/omid/transaction/TSOForHBaseCompactorTestModule.html
index 0412c34..afcc60f 100644
--- a/xref-test/org/apache/omid/transaction/TSOForHBaseCompactorTestModule.html
+++ b/xref-test/org/apache/omid/transaction/TSOForHBaseCompactorTestModule.html
@@ -97,51 +97,52 @@
 <a class="jxr_linenumber" name="87" href="#87">87</a>      @Singleton
 <a class="jxr_linenumber" name="88" href="#88">88</a>      Configuration provideHBaseConfig() <strong class="jxr_keyword">throws</strong> IOException {
 <a class="jxr_linenumber" name="89" href="#89">89</a>          Configuration hbaseConf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="90" href="#90">90</a>          hbaseConf.setInt(<span class="jxr_string">"hbase.hregion.memstore.flush.size"</span>, 10_000 * 1024);
-<a class="jxr_linenumber" name="91" href="#91">91</a>          hbaseConf.setInt(<span class="jxr_string">"hbase.regionserver.nbreservationblocks"</span>, 1);
-<a class="jxr_linenumber" name="92" href="#92">92</a>          hbaseConf.set(<span class="jxr_string">"tso.host"</span>, <span class="jxr_string">"localhost"</span>);
-<a class="jxr_linenumber" name="93" href="#93">93</a>          hbaseConf.setInt(<span class="jxr_string">"tso.port"</span>, 1234);
-<a class="jxr_linenumber" name="94" href="#94">94</a>          hbaseConf.set(<span class="jxr_string">"hbase.coprocessor.region.classes"</span>, <span class="jxr_string">"org.apache.omid.transaction.OmidCompactor"</span>);
-<a class="jxr_linenumber" name="95" href="#95">95</a>          <strong class="jxr_keyword">final</strong> String rootdir = <span class="jxr_string">"/tmp/hbase.test.dir/"</span>;
-<a class="jxr_linenumber" name="96" href="#96">96</a>          File rootdirFile = <strong class="jxr_keyword">new</strong> File(rootdir);
-<a class="jxr_linenumber" name="97" href="#97">97</a>          FileUtils.deleteDirectory(rootdirFile);
-<a class="jxr_linenumber" name="98" href="#98">98</a>          hbaseConf.set(<span class="jxr_string">"hbase.rootdir"</span>, rootdir);
-<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">return</strong> hbaseConf;
-<a class="jxr_linenumber" name="100" href="#100">100</a>     }
-<a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>     @Provides
-<a class="jxr_linenumber" name="103" href="#103">103</a>     TSOServerConfig provideTSOServerConfig() {
-<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">return</strong> config;
-<a class="jxr_linenumber" name="105" href="#105">105</a>     }
-<a class="jxr_linenumber" name="106" href="#106">106</a> 
-<a class="jxr_linenumber" name="107" href="#107">107</a>     @Provides
-<a class="jxr_linenumber" name="108" href="#108">108</a>     @Singleton
-<a class="jxr_linenumber" name="109" href="#109">109</a>     MetricsRegistry provideMetricsRegistry() {
-<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NullMetricsProvider();
-<a class="jxr_linenumber" name="111" href="#111">111</a>     }
-<a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a>     @Provides
-<a class="jxr_linenumber" name="114" href="#114">114</a>     @Singleton
-<a class="jxr_linenumber" name="115" href="#115">115</a>     LeaseManagement provideLeaseManager(TSOChannelHandler tsoChannelHandler,
-<a class="jxr_linenumber" name="116" href="#116">116</a>                                         TSOStateManager stateManager) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="117" href="#117">117</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> VoidLeaseManager(tsoChannelHandler, stateManager);
-<a class="jxr_linenumber" name="118" href="#118">118</a>     }
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>     @Provides
-<a class="jxr_linenumber" name="121" href="#121">121</a>     @Named(TSO_HOST_AND_PORT_KEY)
-<a class="jxr_linenumber" name="122" href="#122">122</a>     String provideTSOHostAndPort() <strong class="jxr_keyword">throws</strong> SocketException, UnknownHostException {
-<a class="jxr_linenumber" name="123" href="#123">123</a>         <strong class="jxr_keyword">return</strong> NetworkInterfaceUtils.getTSOHostAndPort(config);
-<a class="jxr_linenumber" name="124" href="#124">124</a>     }
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>     @Provides
-<a class="jxr_linenumber" name="127" href="#127">127</a>     PersistenceProcessorHandler[] getPersistenceProcessorHandler(Provider&lt;PersistenceProcessorHandler&gt; provider) {
-<a class="jxr_linenumber" name="128" href="#128">128</a>         PersistenceProcessorHandler[] persistenceProcessorHandlers = <strong class="jxr_keyword">new</strong> PersistenceProcessorHandler[config.getNumConcurrentCTWriters()];
-<a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; persistenceProcessorHandlers.length; i++) {
-<a class="jxr_linenumber" name="130" href="#130">130</a>             persistenceProcessorHandlers[i] = provider.get();
-<a class="jxr_linenumber" name="131" href="#131">131</a>         }
-<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">return</strong> persistenceProcessorHandlers;
-<a class="jxr_linenumber" name="133" href="#133">133</a>     }
-<a class="jxr_linenumber" name="134" href="#134">134</a> }
+<a class="jxr_linenumber" name="90" href="#90">90</a>          hbaseConf.setBoolean(<span class="jxr_string">"hbase.localcluster.assign.random.ports"</span>,<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="91" href="#91">91</a>          hbaseConf.setInt(<span class="jxr_string">"hbase.hregion.memstore.flush.size"</span>, 10_000 * 1024);
+<a class="jxr_linenumber" name="92" href="#92">92</a>          hbaseConf.setInt(<span class="jxr_string">"hbase.regionserver.nbreservationblocks"</span>, 1);
+<a class="jxr_linenumber" name="93" href="#93">93</a>          hbaseConf.set(<span class="jxr_string">"tso.host"</span>, <span class="jxr_string">"localhost"</span>);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          hbaseConf.setInt(<span class="jxr_string">"tso.port"</span>, 1234);
+<a class="jxr_linenumber" name="95" href="#95">95</a>          hbaseConf.set(<span class="jxr_string">"hbase.coprocessor.region.classes"</span>, <span class="jxr_string">"org.apache.omid.transaction.OmidCompactor"</span>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>          <strong class="jxr_keyword">final</strong> String rootdir = <span class="jxr_string">"/tmp/hbase.test.dir/"</span>;
+<a class="jxr_linenumber" name="97" href="#97">97</a>          File rootdirFile = <strong class="jxr_keyword">new</strong> File(rootdir);
+<a class="jxr_linenumber" name="98" href="#98">98</a>          FileUtils.deleteDirectory(rootdirFile);
+<a class="jxr_linenumber" name="99" href="#99">99</a>          hbaseConf.set(<span class="jxr_string">"hbase.rootdir"</span>, rootdir);
+<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">return</strong> hbaseConf;
+<a class="jxr_linenumber" name="101" href="#101">101</a>     }
+<a class="jxr_linenumber" name="102" href="#102">102</a> 
+<a class="jxr_linenumber" name="103" href="#103">103</a>     @Provides
+<a class="jxr_linenumber" name="104" href="#104">104</a>     TSOServerConfig provideTSOServerConfig() {
+<a class="jxr_linenumber" name="105" href="#105">105</a>         <strong class="jxr_keyword">return</strong> config;
+<a class="jxr_linenumber" name="106" href="#106">106</a>     }
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>     @Provides
+<a class="jxr_linenumber" name="109" href="#109">109</a>     @Singleton
+<a class="jxr_linenumber" name="110" href="#110">110</a>     MetricsRegistry provideMetricsRegistry() {
+<a class="jxr_linenumber" name="111" href="#111">111</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NullMetricsProvider();
+<a class="jxr_linenumber" name="112" href="#112">112</a>     }
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>     @Provides
+<a class="jxr_linenumber" name="115" href="#115">115</a>     @Singleton
+<a class="jxr_linenumber" name="116" href="#116">116</a>     LeaseManagement provideLeaseManager(TSOChannelHandler tsoChannelHandler,
+<a class="jxr_linenumber" name="117" href="#117">117</a>                                         TSOStateManager stateManager) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="118" href="#118">118</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> VoidLeaseManager(tsoChannelHandler, stateManager);
+<a class="jxr_linenumber" name="119" href="#119">119</a>     }
+<a class="jxr_linenumber" name="120" href="#120">120</a> 
+<a class="jxr_linenumber" name="121" href="#121">121</a>     @Provides
+<a class="jxr_linenumber" name="122" href="#122">122</a>     @Named(TSO_HOST_AND_PORT_KEY)
+<a class="jxr_linenumber" name="123" href="#123">123</a>     String provideTSOHostAndPort() <strong class="jxr_keyword">throws</strong> SocketException, UnknownHostException {
+<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">return</strong> NetworkInterfaceUtils.getTSOHostAndPort(config);
+<a class="jxr_linenumber" name="125" href="#125">125</a>     }
+<a class="jxr_linenumber" name="126" href="#126">126</a> 
+<a class="jxr_linenumber" name="127" href="#127">127</a>     @Provides
+<a class="jxr_linenumber" name="128" href="#128">128</a>     PersistenceProcessorHandler[] getPersistenceProcessorHandler(Provider&lt;PersistenceProcessorHandler&gt; provider) {
+<a class="jxr_linenumber" name="129" href="#129">129</a>         PersistenceProcessorHandler[] persistenceProcessorHandlers = <strong class="jxr_keyword">new</strong> PersistenceProcessorHandler[config.getNumConcurrentCTWriters()];
+<a class="jxr_linenumber" name="130" href="#130">130</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; persistenceProcessorHandlers.length; i++) {
+<a class="jxr_linenumber" name="131" href="#131">131</a>             persistenceProcessorHandlers[i] = provider.get();
+<a class="jxr_linenumber" name="132" href="#132">132</a>         }
+<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">return</strong> persistenceProcessorHandlers;
+<a class="jxr_linenumber" name="134" href="#134">134</a>     }
+<a class="jxr_linenumber" name="135" href="#135">135</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[15/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/AbstractTransaction.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/AbstractTransaction.html b/xref/org/apache/omid/transaction/AbstractTransaction.html
index 2ef6c0a..40f2eee 100644
--- a/xref/org/apache/omid/transaction/AbstractTransaction.html
+++ b/xref/org/apache/omid/transaction/AbstractTransaction.html
@@ -28,203 +28,372 @@
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> * Omid's base abstract implementation of the {@link Transaction} interface.</em>
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * Provides extra methods to access other basic transaction state required by</em>
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * {@link TransactionManager} implementations based on snapshot</em>
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * isolation.</em>
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * So, this abstract class must be extended by particular implementations of</em>
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * transaction managers related to different storage systems (HBase...)</em>
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> AbstractTransaction&lt;T <strong class="jxr_keyword">extends</strong> CellId&gt; <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> {
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">transient</strong> Map&lt;String, Object&gt; metadata = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
-<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> transactionManager;
-<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> startTimestamp;
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> epoch;
-<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> commitTimestamp;
-<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isRollbackOnly;
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Set&lt;T&gt; writeSet;
-<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Status</a> status = Status.RUNNING;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment">     * Base constructor</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment">     * @param transactionId</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment">     *            transaction identifier to assign</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment">     * @param epoch</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment">     *            epoch of the TSOServer instance that created this transaction</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment">     *            Used in High Availability to guarantee data consistency</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment">     * @param writeSet</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment">     *            initial write set for the transaction.</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment">     *            Should be empty in most cases.</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment">     * @param transactionManager</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment">     *            transaction manager associated to this transaction.</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">     *            Usually, should be the one that created the transaction</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment">     *            instance.</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">AbstractTransaction</a>(<strong class="jxr_keyword">long</strong> transactionId,
-<a class="jxr_linenumber" name="66" href="#66">66</a>                                 <strong class="jxr_keyword">long</strong> epoch,
-<a class="jxr_linenumber" name="67" href="#67">67</a>                                 Set&lt;T&gt; writeSet,
-<a class="jxr_linenumber" name="68" href="#68">68</a>                                 <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> transactionManager) {
-<a class="jxr_linenumber" name="69" href="#69">69</a>          <strong class="jxr_keyword">this</strong>.startTimestamp = transactionId;
-<a class="jxr_linenumber" name="70" href="#70">70</a>          <strong class="jxr_keyword">this</strong>.epoch = epoch;
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">this</strong>.writeSet = writeSet;
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">this</strong>.transactionManager = transactionManager;
-<a class="jxr_linenumber" name="73" href="#73">73</a>      }
-<a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="76" href="#76">76</a>  <em class="jxr_javadoccomment">     * Allows to define specific clean-up task for transaction implementations</em>
-<a class="jxr_linenumber" name="77" href="#77">77</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">void</strong> cleanup();
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="81" href="#81">81</a>  <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.Transaction#getTransactionId()</em>
-<a class="jxr_linenumber" name="82" href="#82">82</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>      @Override
-<a class="jxr_linenumber" name="84" href="#84">84</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getTransactionId() {
-<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">return</strong> startTimestamp;
-<a class="jxr_linenumber" name="86" href="#86">86</a>      }
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.Transaction#getEpoch()</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="91" href="#91">91</a>      @Override
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getEpoch() {
-<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">return</strong> epoch;
-<a class="jxr_linenumber" name="94" href="#94">94</a>      }
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.Transaction#getStatus()</em>
-<a class="jxr_linenumber" name="98" href="#98">98</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="99" href="#99">99</a>      @Override
-<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Status</a> getStatus() {
-<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">return</strong> status;
-<a class="jxr_linenumber" name="102" href="#102">102</a>     }
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="105" href="#105">105</a> <em class="jxr_javadoccomment">     * @see Transaction#isRollbackOnly()</em>
-<a class="jxr_linenumber" name="106" href="#106">106</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="107" href="#107">107</a>     @Override
-<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRollbackOnly() {
-<a class="jxr_linenumber" name="109" href="#109">109</a>         isRollbackOnly = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.tso.client.CellId;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * Omid's base abstract implementation of the {@link Transaction} interface.</em>
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * Provides extra methods to access other basic transaction state required by</em>
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * {@link TransactionManager} implementations based on snapshot</em>
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> * isolation.</em>
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * So, this abstract class must be extended by particular implementations of</em>
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * transaction managers related to different storage systems (HBase...)</em>
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> AbstractTransaction&lt;T <strong class="jxr_keyword">extends</strong> CellId&gt; <strong class="jxr_keyword">implements</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Transaction</a> {
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>      <strong class="jxr_keyword">public</strong> enum <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> {
+<a class="jxr_linenumber" name="42" href="#42">42</a>          <em class="jxr_comment">// Regular snapshot isolation. Returns the last key, either from the snapshot or from the current transaction</em>
+<a class="jxr_linenumber" name="43" href="#43">43</a>          <em class="jxr_comment">// Sets the readTimestamp to be the writeTimestamp</em>
+<a class="jxr_linenumber" name="44" href="#44">44</a>          SNAPSHOT,
+<a class="jxr_linenumber" name="45" href="#45">45</a>          <em class="jxr_comment">// Returns all the written version of a key X that written by the transaction and the key X from the provided snapshot.</em>
+<a class="jxr_linenumber" name="46" href="#46">46</a>          SNAPSHOT_ALL,
+<a class="jxr_linenumber" name="47" href="#47">47</a>          <em class="jxr_comment">// Returns the last key, either from the snapshot or from the current transaction that was written before the last checkpoint.</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>          <em class="jxr_comment">// Sets the readTimestamp to be the writeTimestamp - 1</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>          SNAPSHOT_EXCLUDE_CURRENT;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> fromInteger(<strong class="jxr_keyword">int</strong> number) {
+<a class="jxr_linenumber" name="52" href="#52">52</a>              <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> visibilityLevel = SNAPSHOT;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  
+<a class="jxr_linenumber" name="54" href="#54">54</a>              <strong class="jxr_keyword">switch</strong> (number) {
+<a class="jxr_linenumber" name="55" href="#55">55</a>              <strong class="jxr_keyword">case</strong> 0:
+<a class="jxr_linenumber" name="56" href="#56">56</a>                  visibilityLevel = VisibilityLevel.SNAPSHOT;
+<a class="jxr_linenumber" name="57" href="#57">57</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="58" href="#58">58</a>              <strong class="jxr_keyword">case</strong> 1:
+<a class="jxr_linenumber" name="59" href="#59">59</a>                  visibilityLevel =  VisibilityLevel.SNAPSHOT_ALL;
+<a class="jxr_linenumber" name="60" href="#60">60</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="61" href="#61">61</a>              <strong class="jxr_keyword">case</strong> 2:
+<a class="jxr_linenumber" name="62" href="#62">62</a>                  visibilityLevel = VisibilityLevel.SNAPSHOT_EXCLUDE_CURRENT;
+<a class="jxr_linenumber" name="63" href="#63">63</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="64" href="#64">64</a>                  <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="65" href="#65">65</a>                      assert(false);
+<a class="jxr_linenumber" name="66" href="#66">66</a>              }
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>              <strong class="jxr_keyword">return</strong> visibilityLevel;
+<a class="jxr_linenumber" name="69" href="#69">69</a>          }
+<a class="jxr_linenumber" name="70" href="#70">70</a>      }
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">transient</strong> Map&lt;String, Object&gt; metadata = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
+<a class="jxr_linenumber" name="73" href="#73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> transactionManager;
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> startTimestamp;
+<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">long</strong> readTimestamp;
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">long</strong> writeTimestamp;
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> epoch;
+<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> commitTimestamp;
+<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isRollbackOnly;
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Set&lt;T&gt; writeSet;
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Set&lt;T&gt; conflictFreeWriteSet;
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Status</a> status = Status.RUNNING;
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> visibilityLevel;
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="86" href="#86">86</a>  <em class="jxr_javadoccomment">     * Base constructor</em>
+<a class="jxr_linenumber" name="87" href="#87">87</a>  <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">     * @param transactionId</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment">     *            transaction identifier to assign</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment">     * @param epoch</em>
+<a class="jxr_linenumber" name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     *            epoch of the TSOServer instance that created this transaction</em>
+<a class="jxr_linenumber" name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     *            Used in High Availability to guarantee data consistency</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     * @param writeSet</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     *            initial write set for the transaction.</em>
+<a class="jxr_linenumber" name="95" href="#95">95</a>  <em class="jxr_javadoccomment">     *            Should be empty in most cases.</em>
+<a class="jxr_linenumber" name="96" href="#96">96</a>  <em class="jxr_javadoccomment">     * @param conflictFreeWriteSet</em>
+<a class="jxr_linenumber" name="97" href="#97">97</a>  <em class="jxr_javadoccomment">     *            initial conflict free write set for the transaction.</em>
+<a class="jxr_linenumber" name="98" href="#98">98</a>  <em class="jxr_javadoccomment">     *            Should be empty in most cases.</em>
+<a class="jxr_linenumber" name="99" href="#99">99</a>  <em class="jxr_javadoccomment">     * @param transactionManager</em>
+<a class="jxr_linenumber" name="100" href="#100">100</a> <em class="jxr_javadoccomment">     *            transaction manager associated to this transaction.</em>
+<a class="jxr_linenumber" name="101" href="#101">101</a> <em class="jxr_javadoccomment">     *            Usually, should be the one that created the transaction</em>
+<a class="jxr_linenumber" name="102" href="#102">102</a> <em class="jxr_javadoccomment">     *            instance.</em>
+<a class="jxr_linenumber" name="103" href="#103">103</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">AbstractTransaction</a>(<strong class="jxr_keyword">long</strong> transactionId,
+<a class="jxr_linenumber" name="105" href="#105">105</a>                                <strong class="jxr_keyword">long</strong> epoch,
+<a class="jxr_linenumber" name="106" href="#106">106</a>                                Set&lt;T&gt; writeSet,
+<a class="jxr_linenumber" name="107" href="#107">107</a>                                Set&lt;T&gt; conflictFreeWriteSet,
+<a class="jxr_linenumber" name="108" href="#108">108</a>                                <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> transactionManager) {
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">this</strong>(transactionId, transactionId, VisibilityLevel.SNAPSHOT, epoch, writeSet, conflictFreeWriteSet, transactionManager);
 <a class="jxr_linenumber" name="110" href="#110">110</a>     }
 <a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="113" href="#113">113</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.Transaction#isRollbackOnly()</em>
-<a class="jxr_linenumber" name="114" href="#114">114</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="115" href="#115">115</a>     @Override
-<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isRollbackOnly() {
-<a class="jxr_linenumber" name="117" href="#117">117</a>         <strong class="jxr_keyword">return</strong> isRollbackOnly;
-<a class="jxr_linenumber" name="118" href="#118">118</a>     }
-<a class="jxr_linenumber" name="119" href="#119">119</a> 
-<a class="jxr_linenumber" name="120" href="#120">120</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a> <em class="jxr_javadoccomment">     * Returns transaction manager associated to this transaction.</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a> <em class="jxr_javadoccomment">     * @return transaction manager</em>
-<a class="jxr_linenumber" name="123" href="#123">123</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> getTransactionManager() {
-<a class="jxr_linenumber" name="125" href="#125">125</a>         <strong class="jxr_keyword">return</strong> transactionManager;
+<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">AbstractTransaction</a>(<strong class="jxr_keyword">long</strong> transactionId,
+<a class="jxr_linenumber" name="113" href="#113">113</a>             <strong class="jxr_keyword">long</strong> readTimestamp,
+<a class="jxr_linenumber" name="114" href="#114">114</a>             <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> visibilityLevel,
+<a class="jxr_linenumber" name="115" href="#115">115</a>             <strong class="jxr_keyword">long</strong> epoch,
+<a class="jxr_linenumber" name="116" href="#116">116</a>             Set&lt;T&gt; writeSet,
+<a class="jxr_linenumber" name="117" href="#117">117</a>             Set&lt;T&gt; conflictFreeWriteSet,
+<a class="jxr_linenumber" name="118" href="#118">118</a>             <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> transactionManager) {
+<a class="jxr_linenumber" name="119" href="#119">119</a>         <strong class="jxr_keyword">this</strong>.startTimestamp = <strong class="jxr_keyword">this</strong>.writeTimestamp = transactionId;
+<a class="jxr_linenumber" name="120" href="#120">120</a>         <strong class="jxr_keyword">this</strong>.readTimestamp = readTimestamp;
+<a class="jxr_linenumber" name="121" href="#121">121</a>         <strong class="jxr_keyword">this</strong>.epoch = epoch;
+<a class="jxr_linenumber" name="122" href="#122">122</a>         <strong class="jxr_keyword">this</strong>.writeSet = writeSet;
+<a class="jxr_linenumber" name="123" href="#123">123</a>         <strong class="jxr_keyword">this</strong>.conflictFreeWriteSet = conflictFreeWriteSet;
+<a class="jxr_linenumber" name="124" href="#124">124</a>         <strong class="jxr_keyword">this</strong>.transactionManager = transactionManager;
+<a class="jxr_linenumber" name="125" href="#125">125</a>         <strong class="jxr_keyword">this</strong>.visibilityLevel = visibilityLevel;
 <a class="jxr_linenumber" name="126" href="#126">126</a>     }
 <a class="jxr_linenumber" name="127" href="#127">127</a> 
 <a class="jxr_linenumber" name="128" href="#128">128</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="129" href="#129">129</a> <em class="jxr_javadoccomment">     * Returns the start timestamp for this transaction.</em>
-<a class="jxr_linenumber" name="130" href="#130">130</a> <em class="jxr_javadoccomment">     * @return start timestamp</em>
-<a class="jxr_linenumber" name="131" href="#131">131</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getStartTimestamp() {
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">return</strong> startTimestamp;
-<a class="jxr_linenumber" name="134" href="#134">134</a>     }
-<a class="jxr_linenumber" name="135" href="#135">135</a> 
-<a class="jxr_linenumber" name="136" href="#136">136</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="137" href="#137">137</a> <em class="jxr_javadoccomment">     * Returns the commit timestamp for this transaction.</em>
-<a class="jxr_linenumber" name="138" href="#138">138</a> <em class="jxr_javadoccomment">     * @return commit timestamp</em>
-<a class="jxr_linenumber" name="139" href="#139">139</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getCommitTimestamp() {
-<a class="jxr_linenumber" name="141" href="#141">141</a>         <strong class="jxr_keyword">return</strong> commitTimestamp;
-<a class="jxr_linenumber" name="142" href="#142">142</a>     }
-<a class="jxr_linenumber" name="143" href="#143">143</a> 
-<a class="jxr_linenumber" name="144" href="#144">144</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="145" href="#145">145</a> <em class="jxr_javadoccomment">     * Sets the commit timestamp for this transaction.</em>
-<a class="jxr_linenumber" name="146" href="#146">146</a> <em class="jxr_javadoccomment">     * @param commitTimestamp</em>
-<a class="jxr_linenumber" name="147" href="#147">147</a> <em class="jxr_javadoccomment">     *            the commit timestamp to set</em>
+<a class="jxr_linenumber" name="129" href="#129">129</a> <em class="jxr_javadoccomment">     * Base constructor</em>
+<a class="jxr_linenumber" name="130" href="#130">130</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="131" href="#131">131</a> <em class="jxr_javadoccomment">     * @param transactionId</em>
+<a class="jxr_linenumber" name="132" href="#132">132</a> <em class="jxr_javadoccomment">     *            transaction identifier to assign</em>
+<a class="jxr_linenumber" name="133" href="#133">133</a> <em class="jxr_javadoccomment">     * @param epoch</em>
+<a class="jxr_linenumber" name="134" href="#134">134</a> <em class="jxr_javadoccomment">     *            epoch of the TSOServer instance that created this transaction</em>
+<a class="jxr_linenumber" name="135" href="#135">135</a> <em class="jxr_javadoccomment">     *            Used in High Availability to guarantee data consistency</em>
+<a class="jxr_linenumber" name="136" href="#136">136</a> <em class="jxr_javadoccomment">     * @param writeSet</em>
+<a class="jxr_linenumber" name="137" href="#137">137</a> <em class="jxr_javadoccomment">     *            initial write set for the transaction.</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a> <em class="jxr_javadoccomment">     *            Should be empty in most cases.</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a> <em class="jxr_javadoccomment">     * @param transactionManager</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a> <em class="jxr_javadoccomment">     *            transaction manager associated to this transaction.</em>
+<a class="jxr_linenumber" name="141" href="#141">141</a> <em class="jxr_javadoccomment">     *            Usually, should be the one that created the transaction</em>
+<a class="jxr_linenumber" name="142" href="#142">142</a> <em class="jxr_javadoccomment">     *            instance.</em>
+<a class="jxr_linenumber" name="143" href="#143">143</a> <em class="jxr_javadoccomment">     * @param readTimestamp</em>
+<a class="jxr_linenumber" name="144" href="#144">144</a> <em class="jxr_javadoccomment">     *            the snapshot to read from</em>
+<a class="jxr_linenumber" name="145" href="#145">145</a> <em class="jxr_javadoccomment">     * @param writeTimestamp</em>
+<a class="jxr_linenumber" name="146" href="#146">146</a> <em class="jxr_javadoccomment">     *            the timestamp to write to</em>
+<a class="jxr_linenumber" name="147" href="#147">147</a> <em class="jxr_javadoccomment">     *</em>
 <a class="jxr_linenumber" name="148" href="#148">148</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="149" href="#149">149</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setCommitTimestamp(<strong class="jxr_keyword">long</strong> commitTimestamp) {
-<a class="jxr_linenumber" name="150" href="#150">150</a>         <strong class="jxr_keyword">this</strong>.commitTimestamp = commitTimestamp;
-<a class="jxr_linenumber" name="151" href="#151">151</a>     }
-<a class="jxr_linenumber" name="152" href="#152">152</a> 
-<a class="jxr_linenumber" name="153" href="#153">153</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="154" href="#154">154</a> <em class="jxr_javadoccomment">     * Sets the status for this transaction.</em>
-<a class="jxr_linenumber" name="155" href="#155">155</a> <em class="jxr_javadoccomment">     * @param status</em>
-<a class="jxr_linenumber" name="156" href="#156">156</a> <em class="jxr_javadoccomment">     *            the {@link Status} to set</em>
-<a class="jxr_linenumber" name="157" href="#157">157</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setStatus(<a href="../../../../org/apache/omid/transaction/Transaction.html">Status</a> status) {
-<a class="jxr_linenumber" name="159" href="#159">159</a>         <strong class="jxr_keyword">this</strong>.status = status;
-<a class="jxr_linenumber" name="160" href="#160">160</a>     }
-<a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="163" href="#163">163</a> <em class="jxr_javadoccomment">     * Returns the current write-set for this transaction.</em>
-<a class="jxr_linenumber" name="164" href="#164">164</a> <em class="jxr_javadoccomment">     * @return write set</em>
-<a class="jxr_linenumber" name="165" href="#165">165</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">public</strong> Set&lt;T&gt; getWriteSet() {
-<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">return</strong> writeSet;
-<a class="jxr_linenumber" name="168" href="#168">168</a>     }
-<a class="jxr_linenumber" name="169" href="#169">169</a> 
-<a class="jxr_linenumber" name="170" href="#170">170</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a> <em class="jxr_javadoccomment">     * Adds an element to the transaction write-set.</em>
-<a class="jxr_linenumber" name="172" href="#172">172</a> <em class="jxr_javadoccomment">     * @param element</em>
-<a class="jxr_linenumber" name="173" href="#173">173</a> <em class="jxr_javadoccomment">     *            the element to add</em>
-<a class="jxr_linenumber" name="174" href="#174">174</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addWriteSetElement(T element) {
-<a class="jxr_linenumber" name="176" href="#176">176</a>         writeSet.add(element);
-<a class="jxr_linenumber" name="177" href="#177">177</a>     }
-<a class="jxr_linenumber" name="178" href="#178">178</a> 
-<a class="jxr_linenumber" name="179" href="#179">179</a>     @Override
-<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="181" href="#181">181</a>         <strong class="jxr_keyword">return</strong> String.format(<span class="jxr_string">"Tx-%s [%s] (ST=%d, CT=%d, Epoch=%d) WriteSet %s"</span>,
-<a class="jxr_linenumber" name="182" href="#182">182</a>                              Long.toHexString(getTransactionId()),
-<a class="jxr_linenumber" name="183" href="#183">183</a>                              status,
-<a class="jxr_linenumber" name="184" href="#184">184</a>                              startTimestamp,
-<a class="jxr_linenumber" name="185" href="#185">185</a>                              commitTimestamp,
-<a class="jxr_linenumber" name="186" href="#186">186</a>                              epoch,
-<a class="jxr_linenumber" name="187" href="#187">187</a>                              writeSet);
-<a class="jxr_linenumber" name="188" href="#188">188</a>     }
-<a class="jxr_linenumber" name="189" href="#189">189</a> 
+<a class="jxr_linenumber" name="149" href="#149">149</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">AbstractTransaction</a>(<strong class="jxr_keyword">long</strong> transactionId,
+<a class="jxr_linenumber" name="150" href="#150">150</a>                                <strong class="jxr_keyword">long</strong> epoch,
+<a class="jxr_linenumber" name="151" href="#151">151</a>                                Set&lt;T&gt; writeSet,
+<a class="jxr_linenumber" name="152" href="#152">152</a>                                Set&lt;T&gt; conflictFreeWriteSet,
+<a class="jxr_linenumber" name="153" href="#153">153</a>                                <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> transactionManager,
+<a class="jxr_linenumber" name="154" href="#154">154</a>                                <strong class="jxr_keyword">long</strong> readTimestamp,
+<a class="jxr_linenumber" name="155" href="#155">155</a>                                <strong class="jxr_keyword">long</strong> writeTimestamp) {
+<a class="jxr_linenumber" name="156" href="#156">156</a>         <strong class="jxr_keyword">this</strong>.startTimestamp = transactionId;
+<a class="jxr_linenumber" name="157" href="#157">157</a>         <strong class="jxr_keyword">this</strong>.readTimestamp = readTimestamp;
+<a class="jxr_linenumber" name="158" href="#158">158</a>         <strong class="jxr_keyword">this</strong>.writeTimestamp = writeTimestamp;
+<a class="jxr_linenumber" name="159" href="#159">159</a>         <strong class="jxr_keyword">this</strong>.epoch = epoch;
+<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">this</strong>.writeSet = writeSet;
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">this</strong>.conflictFreeWriteSet = conflictFreeWriteSet;
+<a class="jxr_linenumber" name="162" href="#162">162</a>         <strong class="jxr_keyword">this</strong>.transactionManager = transactionManager;
+<a class="jxr_linenumber" name="163" href="#163">163</a>         <strong class="jxr_keyword">this</strong>.visibilityLevel = VisibilityLevel.SNAPSHOT;
+<a class="jxr_linenumber" name="164" href="#164">164</a>     }
+<a class="jxr_linenumber" name="165" href="#165">165</a> 
+<a class="jxr_linenumber" name="166" href="#166">166</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a> <em class="jxr_javadoccomment">     * Creates a checkpoint and sets the visibility level to SNAPSHOT_EXCLUDE_CURRENT</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a> <em class="jxr_javadoccomment">     * The number of checkpoints is bounded to NUM_CHECKPOINTS in order to make checkpoint a client side operation</em>
+<a class="jxr_linenumber" name="169" href="#169">169</a> <em class="jxr_javadoccomment">     * @return true if a checkpoint was created and false otherwise</em>
+<a class="jxr_linenumber" name="170" href="#170">170</a> <em class="jxr_javadoccomment">     * @throws TransactionException</em>
+<a class="jxr_linenumber" name="171" href="#171">171</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> checkpoint() <strong class="jxr_keyword">throws</strong> TransactionException {
+<a class="jxr_linenumber" name="173" href="#173">173</a> 
+<a class="jxr_linenumber" name="174" href="#174">174</a>         setVisibilityLevel(VisibilityLevel.SNAPSHOT_EXCLUDE_CURRENT);
+<a class="jxr_linenumber" name="175" href="#175">175</a>         <strong class="jxr_keyword">this</strong>.readTimestamp = <strong class="jxr_keyword">this</strong>.writeTimestamp++;
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.writeTimestamp % AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN == 0) {
+<a class="jxr_linenumber" name="178" href="#178">178</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/transaction/TransactionException.html">TransactionException</a>(<span class="jxr_string">"Error: number of checkpoing cannot exceed "</span> + (AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN - 1));
+<a class="jxr_linenumber" name="179" href="#179">179</a>         }
+<a class="jxr_linenumber" name="180" href="#180">180</a>     }
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a> <em class="jxr_javadoccomment">     * Allows to define specific clean-up task for transaction implementations</em>
+<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">void</strong> cleanup();
+<a class="jxr_linenumber" name="186" href="#186">186</a> 
+<a class="jxr_linenumber" name="187" href="#187">187</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="188" href="#188">188</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.Transaction#getTransactionId()</em>
+<a class="jxr_linenumber" name="189" href="#189">189</a> <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="190" href="#190">190</a>     @Override
-<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> Optional&lt;Object&gt; getMetadata(String key) {
-<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">return</strong> Optional.fromNullable(metadata.get(key));
+<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getTransactionId() {
+<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">return</strong> startTimestamp;
 <a class="jxr_linenumber" name="193" href="#193">193</a>     }
 <a class="jxr_linenumber" name="194" href="#194">194</a> 
 <a class="jxr_linenumber" name="195" href="#195">195</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="196" href="#196">196</a> <em class="jxr_javadoccomment">     * Expects they metadata stored under key "key" to be of the "Set" type,</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a> <em class="jxr_javadoccomment">     * append "value" to the existing set or creates a new one</em>
-<a class="jxr_linenumber" name="198" href="#198">198</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="199" href="#199">199</a>     @Override
-<a class="jxr_linenumber" name="200" href="#200">200</a>     @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="201" href="#201">201</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> appendMetadata(String key, Object value) {
-<a class="jxr_linenumber" name="202" href="#202">202</a>         List existingValue = (List) metadata.get(key);
-<a class="jxr_linenumber" name="203" href="#203">203</a>         <strong class="jxr_keyword">if</strong> (existingValue == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="204" href="#204">204</a>             List&lt;Object&gt; newList = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="205" href="#205">205</a>             newList.add(value);
-<a class="jxr_linenumber" name="206" href="#206">206</a>             metadata.put(key, newList);
-<a class="jxr_linenumber" name="207" href="#207">207</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="208" href="#208">208</a>             existingValue.add(value);
-<a class="jxr_linenumber" name="209" href="#209">209</a>         }
-<a class="jxr_linenumber" name="210" href="#210">210</a>     }
-<a class="jxr_linenumber" name="211" href="#211">211</a> 
-<a class="jxr_linenumber" name="212" href="#212">212</a>     @Override
-<a class="jxr_linenumber" name="213" href="#213">213</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMetadata(String key, Object value) {
-<a class="jxr_linenumber" name="214" href="#214">214</a>         metadata.put(key, value);
-<a class="jxr_linenumber" name="215" href="#215">215</a>     }
-<a class="jxr_linenumber" name="216" href="#216">216</a> 
-<a class="jxr_linenumber" name="217" href="#217">217</a> }
+<a class="jxr_linenumber" name="196" href="#196">196</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.Transaction#getEpoch()</em>
+<a class="jxr_linenumber" name="197" href="#197">197</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="198" href="#198">198</a>     @Override
+<a class="jxr_linenumber" name="199" href="#199">199</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getEpoch() {
+<a class="jxr_linenumber" name="200" href="#200">200</a>         <strong class="jxr_keyword">return</strong> epoch;
+<a class="jxr_linenumber" name="201" href="#201">201</a>     }
+<a class="jxr_linenumber" name="202" href="#202">202</a> 
+<a class="jxr_linenumber" name="203" href="#203">203</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="204" href="#204">204</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.Transaction#getStatus()</em>
+<a class="jxr_linenumber" name="205" href="#205">205</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="206" href="#206">206</a>     @Override
+<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/Transaction.html">Status</a> getStatus() {
+<a class="jxr_linenumber" name="208" href="#208">208</a>         <strong class="jxr_keyword">return</strong> status;
+<a class="jxr_linenumber" name="209" href="#209">209</a>     }
+<a class="jxr_linenumber" name="210" href="#210">210</a> 
+<a class="jxr_linenumber" name="211" href="#211">211</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="212" href="#212">212</a> <em class="jxr_javadoccomment">     * @see Transaction#isRollbackOnly()</em>
+<a class="jxr_linenumber" name="213" href="#213">213</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="214" href="#214">214</a>     @Override
+<a class="jxr_linenumber" name="215" href="#215">215</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setRollbackOnly() {
+<a class="jxr_linenumber" name="216" href="#216">216</a>         isRollbackOnly = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="217" href="#217">217</a>     }
+<a class="jxr_linenumber" name="218" href="#218">218</a> 
+<a class="jxr_linenumber" name="219" href="#219">219</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="220" href="#220">220</a> <em class="jxr_javadoccomment">     * @see org.apache.omid.transaction.Transaction#isRollbackOnly()</em>
+<a class="jxr_linenumber" name="221" href="#221">221</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="222" href="#222">222</a>     @Override
+<a class="jxr_linenumber" name="223" href="#223">223</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isRollbackOnly() {
+<a class="jxr_linenumber" name="224" href="#224">224</a>         <strong class="jxr_keyword">return</strong> isRollbackOnly;
+<a class="jxr_linenumber" name="225" href="#225">225</a>     }
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="228" href="#228">228</a> <em class="jxr_javadoccomment">     * Returns transaction manager associated to this transaction.</em>
+<a class="jxr_linenumber" name="229" href="#229">229</a> <em class="jxr_javadoccomment">     * @return transaction manager</em>
+<a class="jxr_linenumber" name="230" href="#230">230</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransactionManager.html">AbstractTransactionManager</a> getTransactionManager() {
+<a class="jxr_linenumber" name="232" href="#232">232</a>         <strong class="jxr_keyword">return</strong> transactionManager;
+<a class="jxr_linenumber" name="233" href="#233">233</a>     }
+<a class="jxr_linenumber" name="234" href="#234">234</a> 
+<a class="jxr_linenumber" name="235" href="#235">235</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="236" href="#236">236</a> <em class="jxr_javadoccomment">     * Returns the start timestamp for this transaction.</em>
+<a class="jxr_linenumber" name="237" href="#237">237</a> <em class="jxr_javadoccomment">     * @return start timestamp</em>
+<a class="jxr_linenumber" name="238" href="#238">238</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="239" href="#239">239</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getStartTimestamp() {
+<a class="jxr_linenumber" name="240" href="#240">240</a>         <strong class="jxr_keyword">return</strong> startTimestamp;
+<a class="jxr_linenumber" name="241" href="#241">241</a>     }
+<a class="jxr_linenumber" name="242" href="#242">242</a> 
+<a class="jxr_linenumber" name="243" href="#243">243</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="244" href="#244">244</a> <em class="jxr_javadoccomment">     * Returns the read timestamp for this transaction.</em>
+<a class="jxr_linenumber" name="245" href="#245">245</a> <em class="jxr_javadoccomment">     * @return read timestamp</em>
+<a class="jxr_linenumber" name="246" href="#246">246</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="247" href="#247">247</a>     @Override
+<a class="jxr_linenumber" name="248" href="#248">248</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getReadTimestamp() {
+<a class="jxr_linenumber" name="249" href="#249">249</a>         <strong class="jxr_keyword">return</strong> readTimestamp;
+<a class="jxr_linenumber" name="250" href="#250">250</a>     }
+<a class="jxr_linenumber" name="251" href="#251">251</a> 
+<a class="jxr_linenumber" name="252" href="#252">252</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="253" href="#253">253</a> <em class="jxr_javadoccomment">     * Returns the write timestamp for this transaction.</em>
+<a class="jxr_linenumber" name="254" href="#254">254</a> <em class="jxr_javadoccomment">     * @return write timestamp</em>
+<a class="jxr_linenumber" name="255" href="#255">255</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="256" href="#256">256</a>     @Override
+<a class="jxr_linenumber" name="257" href="#257">257</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getWriteTimestamp() {
+<a class="jxr_linenumber" name="258" href="#258">258</a>         <strong class="jxr_keyword">return</strong> writeTimestamp;
+<a class="jxr_linenumber" name="259" href="#259">259</a>     }
+<a class="jxr_linenumber" name="260" href="#260">260</a> 
+<a class="jxr_linenumber" name="261" href="#261">261</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="262" href="#262">262</a> <em class="jxr_javadoccomment">     * Returns the commit timestamp for this transaction.</em>
+<a class="jxr_linenumber" name="263" href="#263">263</a> <em class="jxr_javadoccomment">     * @return commit timestamp</em>
+<a class="jxr_linenumber" name="264" href="#264">264</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="265" href="#265">265</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getCommitTimestamp() {
+<a class="jxr_linenumber" name="266" href="#266">266</a>         <strong class="jxr_keyword">return</strong> commitTimestamp;
+<a class="jxr_linenumber" name="267" href="#267">267</a>     }
+<a class="jxr_linenumber" name="268" href="#268">268</a> 
+<a class="jxr_linenumber" name="269" href="#269">269</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="270" href="#270">270</a> <em class="jxr_javadoccomment">     * Returns the visibility level for this transaction.</em>
+<a class="jxr_linenumber" name="271" href="#271">271</a> <em class="jxr_javadoccomment">     * @return visibility level</em>
+<a class="jxr_linenumber" name="272" href="#272">272</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="273" href="#273">273</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> getVisibilityLevel() {
+<a class="jxr_linenumber" name="274" href="#274">274</a>         <strong class="jxr_keyword">return</strong> visibilityLevel;
+<a class="jxr_linenumber" name="275" href="#275">275</a>     }
+<a class="jxr_linenumber" name="276" href="#276">276</a> 
+<a class="jxr_linenumber" name="277" href="#277">277</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="278" href="#278">278</a> <em class="jxr_javadoccomment">     * Sets the commit timestamp for this transaction.</em>
+<a class="jxr_linenumber" name="279" href="#279">279</a> <em class="jxr_javadoccomment">     * @param commitTimestamp</em>
+<a class="jxr_linenumber" name="280" href="#280">280</a> <em class="jxr_javadoccomment">     *            the commit timestamp to set</em>
+<a class="jxr_linenumber" name="281" href="#281">281</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="282" href="#282">282</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setCommitTimestamp(<strong class="jxr_keyword">long</strong> commitTimestamp) {
+<a class="jxr_linenumber" name="283" href="#283">283</a>         <strong class="jxr_keyword">this</strong>.commitTimestamp = commitTimestamp;
+<a class="jxr_linenumber" name="284" href="#284">284</a>     }
+<a class="jxr_linenumber" name="285" href="#285">285</a> 
+<a class="jxr_linenumber" name="286" href="#286">286</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="287" href="#287">287</a> <em class="jxr_javadoccomment">     * Sets the visibility level for this transaction.</em>
+<a class="jxr_linenumber" name="288" href="#288">288</a> <em class="jxr_javadoccomment">     * @param visibilityLevel</em>
+<a class="jxr_linenumber" name="289" href="#289">289</a> <em class="jxr_javadoccomment">     *            the {@link VisibilityLevel} to set</em>
+<a class="jxr_linenumber" name="290" href="#290">290</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="291" href="#291">291</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setVisibilityLevel(<a href="../../../../org/apache/omid/transaction/AbstractTransaction.html">VisibilityLevel</a> visibilityLevel) {
+<a class="jxr_linenumber" name="292" href="#292">292</a>         <strong class="jxr_keyword">this</strong>.visibilityLevel = visibilityLevel;
+<a class="jxr_linenumber" name="293" href="#293">293</a> 
+<a class="jxr_linenumber" name="294" href="#294">294</a>         <em class="jxr_comment">// If we are setting visibility level to either SNAPSHOT or SNAPSHOT_ALL</em>
+<a class="jxr_linenumber" name="295" href="#295">295</a>         <em class="jxr_comment">// then we should let readTimestamp equals to writeTimestamp</em>
+<a class="jxr_linenumber" name="296" href="#296">296</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.visibilityLevel == VisibilityLevel.SNAPSHOT ||
+<a class="jxr_linenumber" name="297" href="#297">297</a>             <strong class="jxr_keyword">this</strong>.visibilityLevel == VisibilityLevel.SNAPSHOT_ALL) {
+<a class="jxr_linenumber" name="298" href="#298">298</a>             <strong class="jxr_keyword">this</strong>.readTimestamp = <strong class="jxr_keyword">this</strong>.writeTimestamp;
+<a class="jxr_linenumber" name="299" href="#299">299</a>         }
+<a class="jxr_linenumber" name="300" href="#300">300</a>     }
+<a class="jxr_linenumber" name="301" href="#301">301</a> 
+<a class="jxr_linenumber" name="302" href="#302">302</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="303" href="#303">303</a> <em class="jxr_javadoccomment">     * Sets the status for this transaction.</em>
+<a class="jxr_linenumber" name="304" href="#304">304</a> <em class="jxr_javadoccomment">     * @param status</em>
+<a class="jxr_linenumber" name="305" href="#305">305</a> <em class="jxr_javadoccomment">     *            the {@link Status} to set</em>
+<a class="jxr_linenumber" name="306" href="#306">306</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="307" href="#307">307</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setStatus(<a href="../../../../org/apache/omid/transaction/Transaction.html">Status</a> status) {
+<a class="jxr_linenumber" name="308" href="#308">308</a>         <strong class="jxr_keyword">this</strong>.status = status;
+<a class="jxr_linenumber" name="309" href="#309">309</a>     }
+<a class="jxr_linenumber" name="310" href="#310">310</a> 
+<a class="jxr_linenumber" name="311" href="#311">311</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="312" href="#312">312</a> <em class="jxr_javadoccomment">     * Returns the current write-set for this transaction.</em>
+<a class="jxr_linenumber" name="313" href="#313">313</a> <em class="jxr_javadoccomment">     * @return write set</em>
+<a class="jxr_linenumber" name="314" href="#314">314</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="315" href="#315">315</a>     <strong class="jxr_keyword">public</strong> Set&lt;T&gt; getWriteSet() {
+<a class="jxr_linenumber" name="316" href="#316">316</a>         <strong class="jxr_keyword">return</strong> writeSet;
+<a class="jxr_linenumber" name="317" href="#317">317</a>     }
+<a class="jxr_linenumber" name="318" href="#318">318</a> 
+<a class="jxr_linenumber" name="319" href="#319">319</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="320" href="#320">320</a> <em class="jxr_javadoccomment">     * Returns the current write-set for this transaction that its elements are not candidates for conflict analysis.</em>
+<a class="jxr_linenumber" name="321" href="#321">321</a> <em class="jxr_javadoccomment">     * @return conflictFreeWriteSet</em>
+<a class="jxr_linenumber" name="322" href="#322">322</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="323" href="#323">323</a>     <strong class="jxr_keyword">public</strong> Set&lt;T&gt; getConflictFreeWriteSet() {
+<a class="jxr_linenumber" name="324" href="#324">324</a>         <strong class="jxr_keyword">return</strong> conflictFreeWriteSet;
+<a class="jxr_linenumber" name="325" href="#325">325</a>     }
+<a class="jxr_linenumber" name="326" href="#326">326</a> 
+<a class="jxr_linenumber" name="327" href="#327">327</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="328" href="#328">328</a> <em class="jxr_javadoccomment">     * Adds an element to the transaction write-set.</em>
+<a class="jxr_linenumber" name="329" href="#329">329</a> <em class="jxr_javadoccomment">     * @param element</em>
+<a class="jxr_linenumber" name="330" href="#330">330</a> <em class="jxr_javadoccomment">     *            the element to add</em>
+<a class="jxr_linenumber" name="331" href="#331">331</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="332" href="#332">332</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addWriteSetElement(T element) {
+<a class="jxr_linenumber" name="333" href="#333">333</a>         writeSet.add(element);
+<a class="jxr_linenumber" name="334" href="#334">334</a>     }
+<a class="jxr_linenumber" name="335" href="#335">335</a> 
+<a class="jxr_linenumber" name="336" href="#336">336</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="337" href="#337">337</a> <em class="jxr_javadoccomment">     * Adds an element to the transaction conflict free write-set.</em>
+<a class="jxr_linenumber" name="338" href="#338">338</a> <em class="jxr_javadoccomment">     * @param element</em>
+<a class="jxr_linenumber" name="339" href="#339">339</a> <em class="jxr_javadoccomment">     *            the element to add</em>
+<a class="jxr_linenumber" name="340" href="#340">340</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="341" href="#341">341</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addConflictFreeWriteSetElement(T element) {
+<a class="jxr_linenumber" name="342" href="#342">342</a>         conflictFreeWriteSet.add(element);
+<a class="jxr_linenumber" name="343" href="#343">343</a>     }
+<a class="jxr_linenumber" name="344" href="#344">344</a> 
+<a class="jxr_linenumber" name="345" href="#345">345</a>     @Override
+<a class="jxr_linenumber" name="346" href="#346">346</a>     <strong class="jxr_keyword">public</strong> String toString() {
+<a class="jxr_linenumber" name="347" href="#347">347</a>         <strong class="jxr_keyword">return</strong> String.format(<span class="jxr_string">"Tx-%s [%s] (ST=%d, RT=%d, WT=%d, CT=%d, Epoch=%d) WriteSet %s ConflictFreeWriteSet %s"</span>,
+<a class="jxr_linenumber" name="348" href="#348">348</a>                              Long.toHexString(getTransactionId()),
+<a class="jxr_linenumber" name="349" href="#349">349</a>                              status,
+<a class="jxr_linenumber" name="350" href="#350">350</a>                              startTimestamp,
+<a class="jxr_linenumber" name="351" href="#351">351</a>                              readTimestamp,
+<a class="jxr_linenumber" name="352" href="#352">352</a>                              writeTimestamp,
+<a class="jxr_linenumber" name="353" href="#353">353</a>                              commitTimestamp,
+<a class="jxr_linenumber" name="354" href="#354">354</a>                              epoch,
+<a class="jxr_linenumber" name="355" href="#355">355</a>                              writeSet,
+<a class="jxr_linenumber" name="356" href="#356">356</a>                              conflictFreeWriteSet);
+<a class="jxr_linenumber" name="357" href="#357">357</a>     }
+<a class="jxr_linenumber" name="358" href="#358">358</a> 
+<a class="jxr_linenumber" name="359" href="#359">359</a>     @Override
+<a class="jxr_linenumber" name="360" href="#360">360</a>     <strong class="jxr_keyword">public</strong> Optional&lt;Object&gt; getMetadata(String key) {
+<a class="jxr_linenumber" name="361" href="#361">361</a>         <strong class="jxr_keyword">return</strong> Optional.fromNullable(metadata.get(key));
+<a class="jxr_linenumber" name="362" href="#362">362</a>     }
+<a class="jxr_linenumber" name="363" href="#363">363</a> 
+<a class="jxr_linenumber" name="364" href="#364">364</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="365" href="#365">365</a> <em class="jxr_javadoccomment">     * Expects they metadata stored under key "key" to be of the "Set" type,</em>
+<a class="jxr_linenumber" name="366" href="#366">366</a> <em class="jxr_javadoccomment">     * append "value" to the existing set or creates a new one</em>
+<a class="jxr_linenumber" name="367" href="#367">367</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="368" href="#368">368</a>     @Override
+<a class="jxr_linenumber" name="369" href="#369">369</a>     @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="370" href="#370">370</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> appendMetadata(String key, Object value) {
+<a class="jxr_linenumber" name="371" href="#371">371</a>         List existingValue = (List) metadata.get(key);
+<a class="jxr_linenumber" name="372" href="#372">372</a>         <strong class="jxr_keyword">if</strong> (existingValue == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="373" href="#373">373</a>             List&lt;Object&gt; newList = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="374" href="#374">374</a>             newList.add(value);
+<a class="jxr_linenumber" name="375" href="#375">375</a>             metadata.put(key, newList);
+<a class="jxr_linenumber" name="376" href="#376">376</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="377" href="#377">377</a>             existingValue.add(value);
+<a class="jxr_linenumber" name="378" href="#378">378</a>         }
+<a class="jxr_linenumber" name="379" href="#379">379</a>     }
+<a class="jxr_linenumber" name="380" href="#380">380</a> 
+<a class="jxr_linenumber" name="381" href="#381">381</a>     @Override
+<a class="jxr_linenumber" name="382" href="#382">382</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMetadata(String key, Object value) {
+<a class="jxr_linenumber" name="383" href="#383">383</a>         metadata.put(key, value);
+<a class="jxr_linenumber" name="384" href="#384">384</a>     }
+<a class="jxr_linenumber" name="385" href="#385">385</a> 
+<a class="jxr_linenumber" name="386" href="#386">386</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[19/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/committable/hbase/HBaseCommitTable.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/committable/hbase/HBaseCommitTable.html b/xref/org/apache/omid/committable/hbase/HBaseCommitTable.html
index 4e3a1c9..38de08c 100644
--- a/xref/org/apache/omid/committable/hbase/HBaseCommitTable.html
+++ b/xref/org/apache/omid/committable/hbase/HBaseCommitTable.html
@@ -27,409 +27,417 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.committable.hbase;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.AbstractFuture;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ThreadFactoryBuilder;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.CodedInputStream;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.CodedOutputStream;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HTable;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> javax.inject.Inject;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.LinkedList;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ArrayBlockingQueue;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.BlockingQueue;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutorService;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.COMMIT_TABLE_QUALIFIER;
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.INVALID_TX_QUALIFIER;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.LOW_WATERMARK_QUALIFIER;
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.LOW_WATERMARK_ROW;
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> {
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseCommitTable.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Configuration hbaseConfig;
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String tableName;
-<a class="jxr_linenumber" name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] commitTableFamily;
-<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] lowWatermarkFamily;
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/omid/committable/hbase/KeyGenerator.html">KeyGenerator</a> keygen;
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment">     * Create a hbase commit table.</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment">     * Note that we do not take ownership of the passed htable, it is just used to construct the writer and client.</em>
-<a class="jxr_linenumber" name="68" href="#68">68</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>      @Inject
-<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(Configuration hbaseConfig, <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> config) {
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">this</strong>(hbaseConfig, config, KeyGeneratorImplementations.defaultKeyGenerator());
-<a class="jxr_linenumber" name="72" href="#72">72</a>      }
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(Configuration hbaseConfig, <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> config, <a href="../../../../../org/apache/omid/committable/hbase/KeyGenerator.html">KeyGenerator</a> keygen) {
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">this</strong>.hbaseConfig = hbaseConfig;
-<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">this</strong>.tableName = config.getTableName();
-<a class="jxr_linenumber" name="78" href="#78">78</a>          <strong class="jxr_keyword">this</strong>.commitTableFamily = config.getCommitTableFamily();
-<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">this</strong>.lowWatermarkFamily = config.getLowWatermarkFamily();
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">this</strong>.keygen = keygen;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.COMMIT_TABLE_QUALIFIER;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.INVALID_TX_QUALIFIER;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.LOW_WATERMARK_QUALIFIER;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.committable.hbase.HBaseCommitTableConfig.LOW_WATERMARK_ROW;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.LinkedList;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ArrayBlockingQueue;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.BlockingQueue;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutorService;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> javax.inject.Inject;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Delete;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Table;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.committable.CommitTable.CommitTimestamp.Location;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Optional;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.AbstractFuture;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ListenableFuture;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ThreadFactoryBuilder;
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.CodedInputStream;
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> com.google.protobuf.CodedOutputStream;
+<a class="jxr_linenumber" name="59" href="#59">59</a>  
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTable</a> {
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(HBaseCommitTable.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Connection hbaseConnection;
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String tableName;
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] commitTableFamily;
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] lowWatermarkFamily;
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/omid/committable/hbase/KeyGenerator.html">KeyGenerator</a> keygen;
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     * Create a hbase commit table.</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>  <em class="jxr_javadoccomment">     * Note that we do not take ownership of the passed htable, it is just used to construct the writer and client.</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>  <em class="jxr_javadoccomment">     * @throws IOException </em>
+<a class="jxr_linenumber" name="74" href="#74">74</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>      @Inject
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(Configuration hbaseConfig, <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> config) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">this</strong>(hbaseConfig, config, KeyGeneratorImplementations.defaultKeyGenerator());
+<a class="jxr_linenumber" name="78" href="#78">78</a>      }
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseCommitTable</a>(Configuration hbaseConfig, <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTableConfig.html">HBaseCommitTableConfig</a> config, <a href="../../../../../org/apache/omid/committable/hbase/KeyGenerator.html">KeyGenerator</a> keygen) <strong class="jxr_keyword">throws</strong> IOException {
 <a class="jxr_linenumber" name="81" href="#81">81</a>  
-<a class="jxr_linenumber" name="82" href="#82">82</a>      }
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="85" href="#85">85</a>      <em class="jxr_comment">// Reader and Writer</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">this</strong>.hbaseConnection = ConnectionFactory.createConnection(hbaseConfig);
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <strong class="jxr_keyword">this</strong>.tableName = config.getTableName();
+<a class="jxr_linenumber" name="84" href="#84">84</a>          <strong class="jxr_keyword">this</strong>.commitTableFamily = config.getCommitTableFamily();
+<a class="jxr_linenumber" name="85" href="#85">85</a>          <strong class="jxr_keyword">this</strong>.lowWatermarkFamily = config.getLowWatermarkFamily();
+<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">this</strong>.keygen = keygen;
 <a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseWriter</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/omid/committable/InMemoryCommitTable.html">Writer</a> {
+<a class="jxr_linenumber" name="88" href="#88">88</a>      }
 <a class="jxr_linenumber" name="89" href="#89">89</a>  
-<a class="jxr_linenumber" name="90" href="#90">90</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> INITIAL_LWM_VALUE = -1L;
-<a class="jxr_linenumber" name="91" href="#91">91</a>          <strong class="jxr_keyword">final</strong> HTable table;
-<a class="jxr_linenumber" name="92" href="#92">92</a>          <em class="jxr_comment">// Our own buffer for operations</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>          <strong class="jxr_keyword">final</strong> List&lt;Put&gt; writeBuffer = <strong class="jxr_keyword">new</strong> LinkedList&lt;&gt;();
-<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">long</strong> lowWatermarkToStore = INITIAL_LWM_VALUE;
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="91" href="#91">91</a>      <em class="jxr_comment">// Reader and Writer</em>
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseWriter</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/omid/committable/InMemoryCommitTable.html">Writer</a> {
 <a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>          <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseWriter</a>() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="97" href="#97">97</a>              table = <strong class="jxr_keyword">new</strong> HTable(hbaseConfig, tableName);
-<a class="jxr_linenumber" name="98" href="#98">98</a>          }
-<a class="jxr_linenumber" name="99" href="#99">99</a>  
-<a class="jxr_linenumber" name="100" href="#100">100</a>         @Override
-<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addCommittedTransaction(<strong class="jxr_keyword">long</strong> startTimestamp, <strong class="jxr_keyword">long</strong> commitTimestamp) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="102" href="#102">102</a>             assert (startTimestamp &lt; commitTimestamp);
-<a class="jxr_linenumber" name="103" href="#103">103</a>             Put put = <strong class="jxr_keyword">new</strong> Put(startTimestampToKey(startTimestamp), startTimestamp);
-<a class="jxr_linenumber" name="104" href="#104">104</a>             byte[] value = encodeCommitTimestamp(startTimestamp, commitTimestamp);
-<a class="jxr_linenumber" name="105" href="#105">105</a>             put.add(commitTableFamily, COMMIT_TABLE_QUALIFIER, value);
-<a class="jxr_linenumber" name="106" href="#106">106</a>             writeBuffer.add(put);
-<a class="jxr_linenumber" name="107" href="#107">107</a>         }
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>         @Override
-<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> updateLowWatermark(<strong class="jxr_keyword">long</strong> lowWatermark) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="111" href="#111">111</a>             lowWatermarkToStore = lowWatermark;
-<a class="jxr_linenumber" name="112" href="#112">112</a>         }
-<a class="jxr_linenumber" name="113" href="#113">113</a> 
-<a class="jxr_linenumber" name="114" href="#114">114</a>         @Override
-<a class="jxr_linenumber" name="115" href="#115">115</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> flush() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="116" href="#116">116</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="117" href="#117">117</a>                 addLowWatermarkToStoreToWriteBuffer();
-<a class="jxr_linenumber" name="118" href="#118">118</a>                 table.put(writeBuffer);
-<a class="jxr_linenumber" name="119" href="#119">119</a>                 writeBuffer.clear();
-<a class="jxr_linenumber" name="120" href="#120">120</a>             } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="121" href="#121">121</a>                 LOG.error(<span class="jxr_string">"Error flushing data"</span>, e);
-<a class="jxr_linenumber" name="122" href="#122">122</a>                 <strong class="jxr_keyword">throw</strong> e;
-<a class="jxr_linenumber" name="123" href="#123">123</a>             }
-<a class="jxr_linenumber" name="124" href="#124">124</a>         }
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>         @Override
-<a class="jxr_linenumber" name="127" href="#127">127</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> clearWriteBuffer() {
-<a class="jxr_linenumber" name="128" href="#128">128</a>             writeBuffer.clear();
-<a class="jxr_linenumber" name="129" href="#129">129</a>         }
-<a class="jxr_linenumber" name="130" href="#130">130</a> 
-<a class="jxr_linenumber" name="131" href="#131">131</a>         @Override
-<a class="jxr_linenumber" name="132" href="#132">132</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="133" href="#133">133</a>             clearWriteBuffer();
-<a class="jxr_linenumber" name="134" href="#134">134</a>             table.close();
+<a class="jxr_linenumber" name="96" href="#96">96</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> INITIAL_LWM_VALUE = -1L;
+<a class="jxr_linenumber" name="97" href="#97">97</a>          <strong class="jxr_keyword">final</strong> Table table;
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <em class="jxr_comment">// Our own buffer for operations</em>
+<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">final</strong> List&lt;Put&gt; writeBuffer = <strong class="jxr_keyword">new</strong> LinkedList&lt;&gt;();
+<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">long</strong> lowWatermarkToStore = INITIAL_LWM_VALUE;
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>         <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseWriter</a>() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="103" href="#103">103</a>             table = hbaseConnection.getTable(TableName.valueOf(tableName));
+<a class="jxr_linenumber" name="104" href="#104">104</a>         }
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>         @Override
+<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addCommittedTransaction(<strong class="jxr_keyword">long</strong> startTimestamp, <strong class="jxr_keyword">long</strong> commitTimestamp) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="108" href="#108">108</a>             assert (startTimestamp &lt; commitTimestamp);
+<a class="jxr_linenumber" name="109" href="#109">109</a>             Put put = <strong class="jxr_keyword">new</strong> Put(startTimestampToKey(startTimestamp), startTimestamp);
+<a class="jxr_linenumber" name="110" href="#110">110</a>             byte[] value = encodeCommitTimestamp(startTimestamp, commitTimestamp);
+<a class="jxr_linenumber" name="111" href="#111">111</a>             put.addColumn(commitTableFamily, COMMIT_TABLE_QUALIFIER, value);
+<a class="jxr_linenumber" name="112" href="#112">112</a>             writeBuffer.add(put);
+<a class="jxr_linenumber" name="113" href="#113">113</a>         }
+<a class="jxr_linenumber" name="114" href="#114">114</a> 
+<a class="jxr_linenumber" name="115" href="#115">115</a>         @Override
+<a class="jxr_linenumber" name="116" href="#116">116</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> updateLowWatermark(<strong class="jxr_keyword">long</strong> lowWatermark) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="117" href="#117">117</a>             lowWatermarkToStore = lowWatermark;
+<a class="jxr_linenumber" name="118" href="#118">118</a>         }
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>         @Override
+<a class="jxr_linenumber" name="121" href="#121">121</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> flush() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="122" href="#122">122</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="123" href="#123">123</a>                 addLowWatermarkToStoreToWriteBuffer();
+<a class="jxr_linenumber" name="124" href="#124">124</a>                 table.put(writeBuffer);
+<a class="jxr_linenumber" name="125" href="#125">125</a>                 writeBuffer.clear();
+<a class="jxr_linenumber" name="126" href="#126">126</a>             } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="127" href="#127">127</a>                 LOG.error(<span class="jxr_string">"Error flushing data"</span>, e);
+<a class="jxr_linenumber" name="128" href="#128">128</a>                 <strong class="jxr_keyword">throw</strong> e;
+<a class="jxr_linenumber" name="129" href="#129">129</a>             }
+<a class="jxr_linenumber" name="130" href="#130">130</a>         }
+<a class="jxr_linenumber" name="131" href="#131">131</a> 
+<a class="jxr_linenumber" name="132" href="#132">132</a>         @Override
+<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> clearWriteBuffer() {
+<a class="jxr_linenumber" name="134" href="#134">134</a>             writeBuffer.clear();
 <a class="jxr_linenumber" name="135" href="#135">135</a>         }
 <a class="jxr_linenumber" name="136" href="#136">136</a> 
-<a class="jxr_linenumber" name="137" href="#137">137</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> addLowWatermarkToStoreToWriteBuffer() {
-<a class="jxr_linenumber" name="138" href="#138">138</a>             <strong class="jxr_keyword">long</strong> lowWatermark = lowWatermarkToStore;
-<a class="jxr_linenumber" name="139" href="#139">139</a>             <strong class="jxr_keyword">if</strong>(lowWatermark != INITIAL_LWM_VALUE) {
-<a class="jxr_linenumber" name="140" href="#140">140</a>                 Put put = <strong class="jxr_keyword">new</strong> Put(LOW_WATERMARK_ROW);
-<a class="jxr_linenumber" name="141" href="#141">141</a>                 put.add(lowWatermarkFamily, LOW_WATERMARK_QUALIFIER, Bytes.toBytes(lowWatermark));
-<a class="jxr_linenumber" name="142" href="#142">142</a>                 writeBuffer.add(put);
-<a class="jxr_linenumber" name="143" href="#143">143</a>             }
-<a class="jxr_linenumber" name="144" href="#144">144</a>         }
-<a class="jxr_linenumber" name="145" href="#145">145</a> 
-<a class="jxr_linenumber" name="146" href="#146">146</a>     }
-<a class="jxr_linenumber" name="147" href="#147">147</a> 
-<a class="jxr_linenumber" name="148" href="#148">148</a>     <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseClient</a> <strong class="jxr_keyword">implements</strong> Client, Runnable {
-<a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>         <strong class="jxr_keyword">final</strong> HTable table;
-<a class="jxr_linenumber" name="151" href="#151">151</a>         <strong class="jxr_keyword">final</strong> HTable deleteTable;
-<a class="jxr_linenumber" name="152" href="#152">152</a>         <strong class="jxr_keyword">final</strong> ExecutorService deleteBatchExecutor;
-<a class="jxr_linenumber" name="153" href="#153">153</a>         <strong class="jxr_keyword">final</strong> BlockingQueue&lt;DeleteRequest&gt; deleteQueue;
-<a class="jxr_linenumber" name="154" href="#154">154</a>         <strong class="jxr_keyword">boolean</strong> isClosed = false; <em class="jxr_comment">// @GuardedBy("this")</em>
-<a class="jxr_linenumber" name="155" href="#155">155</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> DELETE_BATCH_SIZE = 1024;
-<a class="jxr_linenumber" name="156" href="#156">156</a> 
-<a class="jxr_linenumber" name="157" href="#157">157</a>         <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseClient</a>() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="158" href="#158">158</a>             table = <strong class="jxr_keyword">new</strong> HTable(hbaseConfig, tableName);
-<a class="jxr_linenumber" name="159" href="#159">159</a>             table.setAutoFlush(false, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="160" href="#160">160</a>             deleteTable = <strong class="jxr_keyword">new</strong> HTable(hbaseConfig, tableName);
-<a class="jxr_linenumber" name="161" href="#161">161</a>             deleteQueue = <strong class="jxr_keyword">new</strong> ArrayBlockingQueue&lt;&gt;(DELETE_BATCH_SIZE);
+<a class="jxr_linenumber" name="137" href="#137">137</a>         @Override
+<a class="jxr_linenumber" name="138" href="#138">138</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="139" href="#139">139</a>             clearWriteBuffer();
+<a class="jxr_linenumber" name="140" href="#140">140</a>             table.close();
+<a class="jxr_linenumber" name="141" href="#141">141</a>         }
+<a class="jxr_linenumber" name="142" href="#142">142</a> 
+<a class="jxr_linenumber" name="143" href="#143">143</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> addLowWatermarkToStoreToWriteBuffer() {
+<a class="jxr_linenumber" name="144" href="#144">144</a>             <strong class="jxr_keyword">long</strong> lowWatermark = lowWatermarkToStore;
+<a class="jxr_linenumber" name="145" href="#145">145</a>             <strong class="jxr_keyword">if</strong>(lowWatermark != INITIAL_LWM_VALUE) {
+<a class="jxr_linenumber" name="146" href="#146">146</a>                 Put put = <strong class="jxr_keyword">new</strong> Put(LOW_WATERMARK_ROW);
+<a class="jxr_linenumber" name="147" href="#147">147</a>                 put.addColumn(lowWatermarkFamily, LOW_WATERMARK_QUALIFIER, Bytes.toBytes(lowWatermark));
+<a class="jxr_linenumber" name="148" href="#148">148</a>                 writeBuffer.add(put);
+<a class="jxr_linenumber" name="149" href="#149">149</a>             }
+<a class="jxr_linenumber" name="150" href="#150">150</a>         }
+<a class="jxr_linenumber" name="151" href="#151">151</a> 
+<a class="jxr_linenumber" name="152" href="#152">152</a>     }
+<a class="jxr_linenumber" name="153" href="#153">153</a> 
+<a class="jxr_linenumber" name="154" href="#154">154</a>     <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseClient</a> <strong class="jxr_keyword">implements</strong> Client, Runnable {
+<a class="jxr_linenumber" name="155" href="#155">155</a> 
+<a class="jxr_linenumber" name="156" href="#156">156</a>         <strong class="jxr_keyword">final</strong> Table table;
+<a class="jxr_linenumber" name="157" href="#157">157</a>         <strong class="jxr_keyword">final</strong> Table deleteTable;
+<a class="jxr_linenumber" name="158" href="#158">158</a>         <strong class="jxr_keyword">final</strong> ExecutorService deleteBatchExecutor;
+<a class="jxr_linenumber" name="159" href="#159">159</a>         <strong class="jxr_keyword">final</strong> BlockingQueue&lt;DeleteRequest&gt; deleteQueue;
+<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">boolean</strong> isClosed = false; <em class="jxr_comment">// @GuardedBy("this")</em>
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> DELETE_BATCH_SIZE = 1024;
 <a class="jxr_linenumber" name="162" href="#162">162</a> 
-<a class="jxr_linenumber" name="163" href="#163">163</a>             deleteBatchExecutor = Executors.newSingleThreadExecutor(
-<a class="jxr_linenumber" name="164" href="#164">164</a>                     <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"omid-completor-%d"</span>).build());
-<a class="jxr_linenumber" name="165" href="#165">165</a>             deleteBatchExecutor.submit(<strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>         }
-<a class="jxr_linenumber" name="168" href="#168">168</a> 
-<a class="jxr_linenumber" name="169" href="#169">169</a>         @Override
-<a class="jxr_linenumber" name="170" href="#170">170</a>         <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Optional&lt;CommitTimestamp&gt;&gt; getCommitTimestamp(<strong class="jxr_keyword">long</strong> startTimestamp) {
-<a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>             SettableFuture&lt;Optional&lt;CommitTimestamp&gt;&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="173" href="#173">173</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="174" href="#174">174</a>                 Get get = <strong class="jxr_keyword">new</strong> Get(startTimestampToKey(startTimestamp));
-<a class="jxr_linenumber" name="175" href="#175">175</a>                 get.addColumn(commitTableFamily, COMMIT_TABLE_QUALIFIER);
-<a class="jxr_linenumber" name="176" href="#176">176</a>                 get.addColumn(commitTableFamily, INVALID_TX_QUALIFIER);
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>                 Result result = table.get(get);
+<a class="jxr_linenumber" name="163" href="#163">163</a>         <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">HBaseClient</a>() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="164" href="#164">164</a>             <em class="jxr_comment">// TODO: create TTable here instead</em>
+<a class="jxr_linenumber" name="165" href="#165">165</a>             table = hbaseConnection.getTable(TableName.valueOf(tableName));
+<a class="jxr_linenumber" name="166" href="#166">166</a>             <em class="jxr_comment">// FIXME: why is this using autoFlush of false? Why would every Delete</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a>             <em class="jxr_comment">// need to be send through a separate RPC?</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a>             deleteTable = hbaseConnection.getTable(TableName.valueOf(tableName));
+<a class="jxr_linenumber" name="169" href="#169">169</a>             deleteQueue = <strong class="jxr_keyword">new</strong> ArrayBlockingQueue&lt;&gt;(DELETE_BATCH_SIZE);
+<a class="jxr_linenumber" name="170" href="#170">170</a> 
+<a class="jxr_linenumber" name="171" href="#171">171</a>             deleteBatchExecutor = Executors.newSingleThreadExecutor(
+<a class="jxr_linenumber" name="172" href="#172">172</a>                     <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"omid-completor-%d"</span>).build());
+<a class="jxr_linenumber" name="173" href="#173">173</a>             deleteBatchExecutor.submit(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>         }
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>         @Override
+<a class="jxr_linenumber" name="178" href="#178">178</a>         <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Optional&lt;CommitTimestamp&gt;&gt; getCommitTimestamp(<strong class="jxr_keyword">long</strong> startTimestamp) {
 <a class="jxr_linenumber" name="179" href="#179">179</a> 
-<a class="jxr_linenumber" name="180" href="#180">180</a>                 <strong class="jxr_keyword">if</strong> (containsInvalidTransaction(result)) {
-<a class="jxr_linenumber" name="181" href="#181">181</a>                     <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> invalidCT =
-<a class="jxr_linenumber" name="182" href="#182">182</a>                             <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(Location.COMMIT_TABLE, INVALID_TRANSACTION_MARKER, false);
-<a class="jxr_linenumber" name="183" href="#183">183</a>                     f.set(Optional.of(invalidCT));
-<a class="jxr_linenumber" name="184" href="#184">184</a>                     <strong class="jxr_keyword">return</strong> f;
-<a class="jxr_linenumber" name="185" href="#185">185</a>                 }
-<a class="jxr_linenumber" name="186" href="#186">186</a> 
-<a class="jxr_linenumber" name="187" href="#187">187</a>                 <strong class="jxr_keyword">if</strong> (containsATimestamp(result)) {
-<a class="jxr_linenumber" name="188" href="#188">188</a>                     <strong class="jxr_keyword">long</strong> commitTSValue =
-<a class="jxr_linenumber" name="189" href="#189">189</a>                             decodeCommitTimestamp(startTimestamp, result.getValue(commitTableFamily, COMMIT_TABLE_QUALIFIER));
-<a class="jxr_linenumber" name="190" href="#190">190</a>                     <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> validCT = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(Location.COMMIT_TABLE, commitTSValue, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="191" href="#191">191</a>                     f.set(Optional.of(validCT));
-<a class="jxr_linenumber" name="192" href="#192">192</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="193" href="#193">193</a>                     f.set(Optional.&lt;CommitTimestamp&gt;absent());
-<a class="jxr_linenumber" name="194" href="#194">194</a>                 }
-<a class="jxr_linenumber" name="195" href="#195">195</a>             } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="196" href="#196">196</a>                 LOG.error(<span class="jxr_string">"Error getting commit timestamp for TX {}"</span>, startTimestamp, e);
-<a class="jxr_linenumber" name="197" href="#197">197</a>                 f.setException(e);
-<a class="jxr_linenumber" name="198" href="#198">198</a>             }
-<a class="jxr_linenumber" name="199" href="#199">199</a>             <strong class="jxr_keyword">return</strong> f;
-<a class="jxr_linenumber" name="200" href="#200">200</a>         }
-<a class="jxr_linenumber" name="201" href="#201">201</a> 
-<a class="jxr_linenumber" name="202" href="#202">202</a>         @Override
-<a class="jxr_linenumber" name="203" href="#203">203</a>         <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Long&gt; readLowWatermark() {
-<a class="jxr_linenumber" name="204" href="#204">204</a>             SettableFuture&lt;Long&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="205" href="#205">205</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="206" href="#206">206</a>                 Get get = <strong class="jxr_keyword">new</strong> Get(LOW_WATERMARK_ROW);
-<a class="jxr_linenumber" name="207" href="#207">207</a>                 get.addColumn(lowWatermarkFamily, LOW_WATERMARK_QUALIFIER);
-<a class="jxr_linenumber" name="208" href="#208">208</a>                 Result result = table.get(get);
-<a class="jxr_linenumber" name="209" href="#209">209</a>                 <strong class="jxr_keyword">if</strong> (containsLowWatermark(result)) {
-<a class="jxr_linenumber" name="210" href="#210">210</a>                     <strong class="jxr_keyword">long</strong> lowWatermark = Bytes.toLong(result.getValue(lowWatermarkFamily, LOW_WATERMARK_QUALIFIER));
-<a class="jxr_linenumber" name="211" href="#211">211</a>                     f.set(lowWatermark);
-<a class="jxr_linenumber" name="212" href="#212">212</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="213" href="#213">213</a>                     f.set(0L);
-<a class="jxr_linenumber" name="214" href="#214">214</a>                 }
-<a class="jxr_linenumber" name="215" href="#215">215</a>             } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="216" href="#216">216</a>                 LOG.error(<span class="jxr_string">"Error getting low watermark"</span>, e);
-<a class="jxr_linenumber" name="217" href="#217">217</a>                 f.setException(e);
-<a class="jxr_linenumber" name="218" href="#218">218</a>             }
-<a class="jxr_linenumber" name="219" href="#219">219</a>             <strong class="jxr_keyword">return</strong> f;
-<a class="jxr_linenumber" name="220" href="#220">220</a>         }
-<a class="jxr_linenumber" name="221" href="#221">221</a> 
-<a class="jxr_linenumber" name="222" href="#222">222</a>         @Override
-<a class="jxr_linenumber" name="223" href="#223">223</a>         <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; completeTransaction(<strong class="jxr_keyword">long</strong> startTimestamp) {
-<a class="jxr_linenumber" name="224" href="#224">224</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="225" href="#225">225</a>                 <strong class="jxr_keyword">synchronized</strong> (<strong class="jxr_keyword">this</strong>) {
-<a class="jxr_linenumber" name="226" href="#226">226</a> 
-<a class="jxr_linenumber" name="227" href="#227">227</a>                     <strong class="jxr_keyword">if</strong> (isClosed) {
-<a class="jxr_linenumber" name="228" href="#228">228</a>                         SettableFuture&lt;Void&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="229" href="#229">229</a>                         f.setException(<strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Not accepting requests anymore"</span>));
-<a class="jxr_linenumber" name="230" href="#230">230</a>                         <strong class="jxr_keyword">return</strong> f;
-<a class="jxr_linenumber" name="231" href="#231">231</a>                     }
-<a class="jxr_linenumber" name="232" href="#232">232</a> 
-<a class="jxr_linenumber" name="233" href="#233">233</a>                     <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> req = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a>(
-<a class="jxr_linenumber" name="234" href="#234">234</a>                             <strong class="jxr_keyword">new</strong> Delete(startTimestampToKey(startTimestamp), startTimestamp));
-<a class="jxr_linenumber" name="235" href="#235">235</a>                     deleteQueue.put(req);
-<a class="jxr_linenumber" name="236" href="#236">236</a>                     <strong class="jxr_keyword">return</strong> req;
-<a class="jxr_linenumber" name="237" href="#237">237</a>                 }
-<a class="jxr_linenumber" name="238" href="#238">238</a>             } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
-<a class="jxr_linenumber" name="239" href="#239">239</a>                 LOG.warn(<span class="jxr_string">"Error generating timestamp for transaction completion"</span>, ioe);
-<a class="jxr_linenumber" name="240" href="#240">240</a>                 SettableFuture&lt;Void&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="241" href="#241">241</a>                 f.setException(ioe);
-<a class="jxr_linenumber" name="242" href="#242">242</a>                 <strong class="jxr_keyword">return</strong> f;
-<a class="jxr_linenumber" name="243" href="#243">243</a>             } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
-<a class="jxr_linenumber" name="244" href="#244">244</a>                 Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="245" href="#245">245</a>                 SettableFuture&lt;Void&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="246" href="#246">246</a>                 f.setException(ie);
-<a class="jxr_linenumber" name="247" href="#247">247</a>                 <strong class="jxr_keyword">return</strong> f;
-<a class="jxr_linenumber" name="248" href="#248">248</a>             }
-<a class="jxr_linenumber" name="249" href="#249">249</a>         }
-<a class="jxr_linenumber" name="250" href="#250">250</a> 
-<a class="jxr_linenumber" name="251" href="#251">251</a>         @Override
-<a class="jxr_linenumber" name="252" href="#252">252</a>         <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Boolean&gt; tryInvalidateTransaction(<strong class="jxr_keyword">long</strong> startTimestamp) {
-<a class="jxr_linenumber" name="253" href="#253">253</a>             SettableFuture&lt;Boolean&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="254" href="#254">254</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="255" href="#255">255</a>                 byte[] row = startTimestampToKey(startTimestamp);
-<a class="jxr_linenumber" name="256" href="#256">256</a>                 Put invalidationPut = <strong class="jxr_keyword">new</strong> Put(row, startTimestamp);
-<a class="jxr_linenumber" name="257" href="#257">257</a>                 invalidationPut.add(commitTableFamily, INVALID_TX_QUALIFIER, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="180" href="#180">180</a>             SettableFuture&lt;Optional&lt;CommitTimestamp&gt;&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="181" href="#181">181</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="182" href="#182">182</a>                 Get get = <strong class="jxr_keyword">new</strong> Get(startTimestampToKey(startTimestamp));
+<a class="jxr_linenumber" name="183" href="#183">183</a>                 get.addColumn(commitTableFamily, COMMIT_TABLE_QUALIFIER);
+<a class="jxr_linenumber" name="184" href="#184">184</a>                 get.addColumn(commitTableFamily, INVALID_TX_QUALIFIER);
+<a class="jxr_linenumber" name="185" href="#185">185</a> 
+<a class="jxr_linenumber" name="186" href="#186">186</a>                 Result result = table.get(get);
+<a class="jxr_linenumber" name="187" href="#187">187</a> 
+<a class="jxr_linenumber" name="188" href="#188">188</a>                 <strong class="jxr_keyword">if</strong> (containsInvalidTransaction(result)) {
+<a class="jxr_linenumber" name="189" href="#189">189</a>                     <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> invalidCT =
+<a class="jxr_linenumber" name="190" href="#190">190</a>                             <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(Location.COMMIT_TABLE, INVALID_TRANSACTION_MARKER, false);
+<a class="jxr_linenumber" name="191" href="#191">191</a>                     f.set(Optional.of(invalidCT));
+<a class="jxr_linenumber" name="192" href="#192">192</a>                     <strong class="jxr_keyword">return</strong> f;
+<a class="jxr_linenumber" name="193" href="#193">193</a>                 }
+<a class="jxr_linenumber" name="194" href="#194">194</a> 
+<a class="jxr_linenumber" name="195" href="#195">195</a>                 <strong class="jxr_keyword">if</strong> (containsATimestamp(result)) {
+<a class="jxr_linenumber" name="196" href="#196">196</a>                     <strong class="jxr_keyword">long</strong> commitTSValue =
+<a class="jxr_linenumber" name="197" href="#197">197</a>                             decodeCommitTimestamp(startTimestamp, result.getValue(commitTableFamily, COMMIT_TABLE_QUALIFIER));
+<a class="jxr_linenumber" name="198" href="#198">198</a>                     <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a> validCT = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/committable/CommitTable.html">CommitTimestamp</a>(Location.COMMIT_TABLE, commitTSValue, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="199" href="#199">199</a>                     f.set(Optional.of(validCT));
+<a class="jxr_linenumber" name="200" href="#200">200</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="201" href="#201">201</a>                     f.set(Optional.&lt;CommitTimestamp&gt;absent());
+<a class="jxr_linenumber" name="202" href="#202">202</a>                 }
+<a class="jxr_linenumber" name="203" href="#203">203</a>             } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="204" href="#204">204</a>                 LOG.error(<span class="jxr_string">"Error getting commit timestamp for TX {}"</span>, startTimestamp, e);
+<a class="jxr_linenumber" name="205" href="#205">205</a>                 f.setException(e);
+<a class="jxr_linenumber" name="206" href="#206">206</a>             }
+<a class="jxr_linenumber" name="207" href="#207">207</a>             <strong class="jxr_keyword">return</strong> f;
+<a class="jxr_linenumber" name="208" href="#208">208</a>         }
+<a class="jxr_linenumber" name="209" href="#209">209</a> 
+<a class="jxr_linenumber" name="210" href="#210">210</a>         @Override
+<a class="jxr_linenumber" name="211" href="#211">211</a>         <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Long&gt; readLowWatermark() {
+<a class="jxr_linenumber" name="212" href="#212">212</a>             SettableFuture&lt;Long&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="213" href="#213">213</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="214" href="#214">214</a>                 Get get = <strong class="jxr_keyword">new</strong> Get(LOW_WATERMARK_ROW);
+<a class="jxr_linenumber" name="215" href="#215">215</a>                 get.addColumn(lowWatermarkFamily, LOW_WATERMARK_QUALIFIER);
+<a class="jxr_linenumber" name="216" href="#216">216</a>                 Result result = table.get(get);
+<a class="jxr_linenumber" name="217" href="#217">217</a>                 <strong class="jxr_keyword">if</strong> (containsLowWatermark(result)) {
+<a class="jxr_linenumber" name="218" href="#218">218</a>                     <strong class="jxr_keyword">long</strong> lowWatermark = Bytes.toLong(result.getValue(lowWatermarkFamily, LOW_WATERMARK_QUALIFIER));
+<a class="jxr_linenumber" name="219" href="#219">219</a>                     f.set(lowWatermark);
+<a class="jxr_linenumber" name="220" href="#220">220</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="221" href="#221">221</a>                     f.set(0L);
+<a class="jxr_linenumber" name="222" href="#222">222</a>                 }
+<a class="jxr_linenumber" name="223" href="#223">223</a>             } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="224" href="#224">224</a>                 LOG.error(<span class="jxr_string">"Error getting low watermark"</span>, e);
+<a class="jxr_linenumber" name="225" href="#225">225</a>                 f.setException(e);
+<a class="jxr_linenumber" name="226" href="#226">226</a>             }
+<a class="jxr_linenumber" name="227" href="#227">227</a>             <strong class="jxr_keyword">return</strong> f;
+<a class="jxr_linenumber" name="228" href="#228">228</a>         }
+<a class="jxr_linenumber" name="229" href="#229">229</a> 
+<a class="jxr_linenumber" name="230" href="#230">230</a>         @Override
+<a class="jxr_linenumber" name="231" href="#231">231</a>         <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Void&gt; completeTransaction(<strong class="jxr_keyword">long</strong> startTimestamp) {
+<a class="jxr_linenumber" name="232" href="#232">232</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="233" href="#233">233</a>                 <strong class="jxr_keyword">synchronized</strong> (<strong class="jxr_keyword">this</strong>) {
+<a class="jxr_linenumber" name="234" href="#234">234</a> 
+<a class="jxr_linenumber" name="235" href="#235">235</a>                     <strong class="jxr_keyword">if</strong> (isClosed) {
+<a class="jxr_linenumber" name="236" href="#236">236</a>                         SettableFuture&lt;Void&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="237" href="#237">237</a>                         f.setException(<strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Not accepting requests anymore"</span>));
+<a class="jxr_linenumber" name="238" href="#238">238</a>                         <strong class="jxr_keyword">return</strong> f;
+<a class="jxr_linenumber" name="239" href="#239">239</a>                     }
+<a class="jxr_linenumber" name="240" href="#240">240</a> 
+<a class="jxr_linenumber" name="241" href="#241">241</a>                     <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> req = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a>(
+<a class="jxr_linenumber" name="242" href="#242">242</a>                             <strong class="jxr_keyword">new</strong> Delete(startTimestampToKey(startTimestamp), startTimestamp));
+<a class="jxr_linenumber" name="243" href="#243">243</a>                     deleteQueue.put(req);
+<a class="jxr_linenumber" name="244" href="#244">244</a>                     <strong class="jxr_keyword">return</strong> req;
+<a class="jxr_linenumber" name="245" href="#245">245</a>                 }
+<a class="jxr_linenumber" name="246" href="#246">246</a>             } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
+<a class="jxr_linenumber" name="247" href="#247">247</a>                 LOG.warn(<span class="jxr_string">"Error generating timestamp for transaction completion"</span>, ioe);
+<a class="jxr_linenumber" name="248" href="#248">248</a>                 SettableFuture&lt;Void&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="249" href="#249">249</a>                 f.setException(ioe);
+<a class="jxr_linenumber" name="250" href="#250">250</a>                 <strong class="jxr_keyword">return</strong> f;
+<a class="jxr_linenumber" name="251" href="#251">251</a>             } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
+<a class="jxr_linenumber" name="252" href="#252">252</a>                 Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="253" href="#253">253</a>                 SettableFuture&lt;Void&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="254" href="#254">254</a>                 f.setException(ie);
+<a class="jxr_linenumber" name="255" href="#255">255</a>                 <strong class="jxr_keyword">return</strong> f;
+<a class="jxr_linenumber" name="256" href="#256">256</a>             }
+<a class="jxr_linenumber" name="257" href="#257">257</a>         }
 <a class="jxr_linenumber" name="258" href="#258">258</a> 
-<a class="jxr_linenumber" name="259" href="#259">259</a>                 <em class="jxr_comment">// We need to write to the invalid column only if the commit timestamp</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a>                 <em class="jxr_comment">// is empty. This has to be done atomically. Otherwise, if we first</em>
-<a class="jxr_linenumber" name="261" href="#261">261</a>                 <em class="jxr_comment">// check the commit timestamp and right before the invalidation a commit</em>
-<a class="jxr_linenumber" name="262" href="#262">262</a>                 <em class="jxr_comment">// timestamp is added and read by a transaction, then snapshot isolation</em>
-<a class="jxr_linenumber" name="263" href="#263">263</a>                 <em class="jxr_comment">// might not be hold (due to the invalidation)</em>
-<a class="jxr_linenumber" name="264" href="#264">264</a>                 <em class="jxr_comment">// TODO: Decide what we should we do if we can not contact the commit table. loop till succeed???</em>
-<a class="jxr_linenumber" name="265" href="#265">265</a>                 <strong class="jxr_keyword">boolean</strong> result = table.checkAndPut(row, commitTableFamily, COMMIT_TABLE_QUALIFIER, <strong class="jxr_keyword">null</strong>, invalidationPut);
-<a class="jxr_linenumber" name="266" href="#266">266</a>                 f.set(result);
-<a class="jxr_linenumber" name="267" href="#267">267</a>             } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
-<a class="jxr_linenumber" name="268" href="#268">268</a>                 f.setException(ioe);
-<a class="jxr_linenumber" name="269" href="#269">269</a>             }
-<a class="jxr_linenumber" name="270" href="#270">270</a>             <strong class="jxr_keyword">return</strong> f;
-<a class="jxr_linenumber" name="271" href="#271">271</a>         }
-<a class="jxr_linenumber" name="272" href="#272">272</a> 
-<a class="jxr_linenumber" name="273" href="#273">273</a>         @Override
-<a class="jxr_linenumber" name="274" href="#274">274</a>         @SuppressWarnings(<span class="jxr_string">"InfiniteLoopStatement"</span>)
-<a class="jxr_linenumber" name="275" href="#275">275</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
-<a class="jxr_linenumber" name="276" href="#276">276</a>             List&lt;DeleteRequest&gt; reqbatch = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="277" href="#277">277</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="278" href="#278">278</a>                 <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
-<a class="jxr_linenumber" name="279" href="#279">279</a>                     <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> r = deleteQueue.poll();
-<a class="jxr_linenumber" name="280" href="#280">280</a>                     <strong class="jxr_keyword">if</strong> (r == <strong class="jxr_keyword">null</strong> &amp;&amp; reqbatch.size() == 0) {
-<a class="jxr_linenumber" name="281" href="#281">281</a>                         r = deleteQueue.take();
-<a class="jxr_linenumber" name="282" href="#282">282</a>                     }
-<a class="jxr_linenumber" name="283" href="#283">283</a> 
-<a class="jxr_linenumber" name="284" href="#284">284</a>                     <strong class="jxr_keyword">if</strong> (r != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="285" href="#285">285</a>                         reqbatch.add(r);
-<a class="jxr_linenumber" name="286" href="#286">286</a>                     }
-<a class="jxr_linenumber" name="287" href="#287">287</a> 
-<a class="jxr_linenumber" name="288" href="#288">288</a>                     <strong class="jxr_keyword">if</strong> (r == <strong class="jxr_keyword">null</strong> || reqbatch.size() == DELETE_BATCH_SIZE) {
-<a class="jxr_linenumber" name="289" href="#289">289</a>                         List&lt;Delete&gt; deletes = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="290" href="#290">290</a>                         <strong class="jxr_keyword">for</strong> (DeleteRequest dr : reqbatch) {
-<a class="jxr_linenumber" name="291" href="#291">291</a>                             deletes.add(dr.getDelete());
-<a class="jxr_linenumber" name="292" href="#292">292</a>                         }
-<a class="jxr_linenumber" name="293" href="#293">293</a>                         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="294" href="#294">294</a>                             deleteTable.delete(deletes);
-<a class="jxr_linenumber" name="295" href="#295">295</a>                             <strong class="jxr_keyword">for</strong> (DeleteRequest dr : reqbatch) {
-<a class="jxr_linenumber" name="296" href="#296">296</a>                                 dr.complete();
-<a class="jxr_linenumber" name="297" href="#297">297</a>                             }
-<a class="jxr_linenumber" name="298" href="#298">298</a>                         } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
-<a class="jxr_linenumber" name="299" href="#299">299</a>                             LOG.warn(<span class="jxr_string">"Error contacting hbase"</span>, ioe);
-<a class="jxr_linenumber" name="300" href="#300">300</a>                             <strong class="jxr_keyword">for</strong> (DeleteRequest dr : reqbatch) {
-<a class="jxr_linenumber" name="301" href="#301">301</a>                                 dr.error(ioe);
-<a class="jxr_linenumber" name="302" href="#302">302</a>                             }
-<a class="jxr_linenumber" name="303" href="#303">303</a>                         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="304" href="#304">304</a>                             reqbatch.clear();
-<a class="jxr_linenumber" name="305" href="#305">305</a>                         }
-<a class="jxr_linenumber" name="306" href="#306">306</a>                     }
-<a class="jxr_linenumber" name="307" href="#307">307</a>                 }
-<a class="jxr_linenumber" name="308" href="#308">308</a>             } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
-<a class="jxr_linenumber" name="309" href="#309">309</a>                 <em class="jxr_comment">// Drain the queue and place the exception in the future</em>
-<a class="jxr_linenumber" name="310" href="#310">310</a>                 <em class="jxr_comment">// for those who placed requests</em>
-<a class="jxr_linenumber" name="311" href="#311">311</a>                 LOG.warn(<span class="jxr_string">"Draining delete queue"</span>);
-<a class="jxr_linenumber" name="312" href="#312">312</a>                 <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> queuedRequest = deleteQueue.poll();
-<a class="jxr_linenumber" name="313" href="#313">313</a>                 <strong class="jxr_keyword">while</strong> (queuedRequest != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="314" href="#314">314</a>                     reqbatch.add(queuedRequest);
-<a class="jxr_linenumber" name="315" href="#315">315</a>                     queuedRequest = deleteQueue.poll();
-<a class="jxr_linenumber" name="316" href="#316">316</a>                 }
-<a class="jxr_linenumber" name="317" href="#317">317</a>                 <strong class="jxr_keyword">for</strong> (DeleteRequest dr : reqbatch) {
-<a class="jxr_linenumber" name="318" href="#318">318</a>                     dr.error(<strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"HBase CommitTable is going to be closed"</span>));
-<a class="jxr_linenumber" name="319" href="#319">319</a>                 }
-<a class="jxr_linenumber" name="320" href="#320">320</a>                 reqbatch.clear();
-<a class="jxr_linenumber" name="321" href="#321">321</a>                 Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="322" href="#322">322</a>             } <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="323" href="#323">323</a>                 LOG.error(<span class="jxr_string">"Transaction completion thread threw exception"</span>, t);
-<a class="jxr_linenumber" name="324" href="#324">324</a>             }
-<a class="jxr_linenumber" name="325" href="#325">325</a>         }
-<a class="jxr_linenumber" name="326" href="#326">326</a> 
-<a class="jxr_linenumber" name="327" href="#327">327</a>         @Override
-<a class="jxr_linenumber" name="328" href="#328">328</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="329" href="#329">329</a>             isClosed = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="330" href="#330">330</a>             deleteBatchExecutor.shutdownNow(); <em class="jxr_comment">// may need to interrupt take</em>
-<a class="jxr_linenumber" name="331" href="#331">331</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="332" href="#332">332</a>                 <strong class="jxr_keyword">if</strong> (!deleteBatchExecutor.awaitTermination(10, TimeUnit.SECONDS)) {
-<a class="jxr_linenumber" name="333" href="#333">333</a>                     LOG.warn(<span class="jxr_string">"Delete executor did not shutdown"</span>);
-<a class="jxr_linenumber" name="334" href="#334">334</a>                 }
-<a class="jxr_linenumber" name="335" href="#335">335</a>             } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
-<a class="jxr_linenumber" name="336" href="#336">336</a>                 Thread.currentThread().interrupt();
-<a class="jxr_linenumber" name="337" href="#337">337</a>             }
-<a class="jxr_linenumber" name="338" href="#338">338</a> 
-<a class="jxr_linenumber" name="339" href="#339">339</a>             LOG.warn(<span class="jxr_string">"Re-Draining delete queue just in case"</span>);
-<a class="jxr_linenumber" name="340" href="#340">340</a>             <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> queuedRequest = deleteQueue.poll();
-<a class="jxr_linenumber" name="341" href="#341">341</a>             <strong class="jxr_keyword">while</strong> (queuedRequest != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="342" href="#342">342</a>                 queuedRequest.error(<strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"HBase CommitTable is going to be closed"</span>));
-<a class="jxr_linenumber" name="343" href="#343">343</a>                 queuedRequest = deleteQueue.poll();
-<a class="jxr_linenumber" name="344" href="#344">344</a>             }
-<a class="jxr_linenumber" name="345" href="#345">345</a> 
-<a class="jxr_linenumber" name="346" href="#346">346</a>             deleteTable.close();
-<a class="jxr_linenumber" name="347" href="#347">347</a>             table.close();
-<a class="jxr_linenumber" name="348" href="#348">348</a>         }
-<a class="jxr_linenumber" name="349" href="#349">349</a> 
-<a class="jxr_linenumber" name="350" href="#350">350</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> containsATimestamp(Result result) {
-<a class="jxr_linenumber" name="351" href="#351">351</a>             <strong class="jxr_keyword">return</strong> (result != <strong class="jxr_keyword">null</strong> &amp;&amp; result.containsColumn(commitTableFamily, COMMIT_TABLE_QUALIFIER));
-<a class="jxr_linenumber" name="352" href="#352">352</a>         }
+<a class="jxr_linenumber" name="259" href="#259">259</a>         @Override
+<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">public</strong> ListenableFuture&lt;Boolean&gt; tryInvalidateTransaction(<strong class="jxr_keyword">long</strong> startTimestamp) {
+<a class="jxr_linenumber" name="261" href="#261">261</a>             SettableFuture&lt;Boolean&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="262" href="#262">262</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="263" href="#263">263</a>                 byte[] row = startTimestampToKey(startTimestamp);
+<a class="jxr_linenumber" name="264" href="#264">264</a>                 Put invalidationPut = <strong class="jxr_keyword">new</strong> Put(row, startTimestamp);
+<a class="jxr_linenumber" name="265" href="#265">265</a>                 invalidationPut.addColumn(commitTableFamily, INVALID_TX_QUALIFIER, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="266" href="#266">266</a> 
+<a class="jxr_linenumber" name="267" href="#267">267</a>                 <em class="jxr_comment">// We need to write to the invalid column only if the commit timestamp</em>
+<a class="jxr_linenumber" name="268" href="#268">268</a>                 <em class="jxr_comment">// is empty. This has to be done atomically. Otherwise, if we first</em>
+<a class="jxr_linenumber" name="269" href="#269">269</a>                 <em class="jxr_comment">// check the commit timestamp and right before the invalidation a commit</em>
+<a class="jxr_linenumber" name="270" href="#270">270</a>                 <em class="jxr_comment">// timestamp is added and read by a transaction, then snapshot isolation</em>
+<a class="jxr_linenumber" name="271" href="#271">271</a>                 <em class="jxr_comment">// might not be hold (due to the invalidation)</em>
+<a class="jxr_linenumber" name="272" href="#272">272</a>                 <em class="jxr_comment">// TODO: Decide what we should we do if we can not contact the commit table. loop till succeed???</em>
+<a class="jxr_linenumber" name="273" href="#273">273</a>                 <strong class="jxr_keyword">boolean</strong> result = table.checkAndPut(row, commitTableFamily, COMMIT_TABLE_QUALIFIER, <strong class="jxr_keyword">null</strong>, invalidationPut);
+<a class="jxr_linenumber" name="274" href="#274">274</a>                 f.set(result);
+<a class="jxr_linenumber" name="275" href="#275">275</a>             } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
+<a class="jxr_linenumber" name="276" href="#276">276</a>                 f.setException(ioe);
+<a class="jxr_linenumber" name="277" href="#277">277</a>             }
+<a class="jxr_linenumber" name="278" href="#278">278</a>             <strong class="jxr_keyword">return</strong> f;
+<a class="jxr_linenumber" name="279" href="#279">279</a>         }
+<a class="jxr_linenumber" name="280" href="#280">280</a> 
+<a class="jxr_linenumber" name="281" href="#281">281</a>         @Override
+<a class="jxr_linenumber" name="282" href="#282">282</a>         @SuppressWarnings(<span class="jxr_string">"InfiniteLoopStatement"</span>)
+<a class="jxr_linenumber" name="283" href="#283">283</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
+<a class="jxr_linenumber" name="284" href="#284">284</a>             List&lt;DeleteRequest&gt; reqbatch = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="285" href="#285">285</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="286" href="#286">286</a>                 <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
+<a class="jxr_linenumber" name="287" href="#287">287</a>                     <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> r = deleteQueue.poll();
+<a class="jxr_linenumber" name="288" href="#288">288</a>                     <strong class="jxr_keyword">if</strong> (r == <strong class="jxr_keyword">null</strong> &amp;&amp; reqbatch.size() == 0) {
+<a class="jxr_linenumber" name="289" href="#289">289</a>                         r = deleteQueue.take();
+<a class="jxr_linenumber" name="290" href="#290">290</a>                     }
+<a class="jxr_linenumber" name="291" href="#291">291</a> 
+<a class="jxr_linenumber" name="292" href="#292">292</a>                     <strong class="jxr_keyword">if</strong> (r != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="293" href="#293">293</a>                         reqbatch.add(r);
+<a class="jxr_linenumber" name="294" href="#294">294</a>                     }
+<a class="jxr_linenumber" name="295" href="#295">295</a> 
+<a class="jxr_linenumber" name="296" href="#296">296</a>                     <strong class="jxr_keyword">if</strong> (r == <strong class="jxr_keyword">null</strong> || reqbatch.size() == DELETE_BATCH_SIZE) {
+<a class="jxr_linenumber" name="297" href="#297">297</a>                         List&lt;Delete&gt; deletes = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="298" href="#298">298</a>                         <strong class="jxr_keyword">for</strong> (DeleteRequest dr : reqbatch) {
+<a class="jxr_linenumber" name="299" href="#299">299</a>                             deletes.add(dr.getDelete());
+<a class="jxr_linenumber" name="300" href="#300">300</a>                         }
+<a class="jxr_linenumber" name="301" href="#301">301</a>                         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="302" href="#302">302</a>                             deleteTable.delete(deletes);
+<a class="jxr_linenumber" name="303" href="#303">303</a>                             <strong class="jxr_keyword">for</strong> (DeleteRequest dr : reqbatch) {
+<a class="jxr_linenumber" name="304" href="#304">304</a>                                 dr.complete();
+<a class="jxr_linenumber" name="305" href="#305">305</a>                             }
+<a class="jxr_linenumber" name="306" href="#306">306</a>                         } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
+<a class="jxr_linenumber" name="307" href="#307">307</a>                             LOG.warn(<span class="jxr_string">"Error contacting hbase"</span>, ioe);
+<a class="jxr_linenumber" name="308" href="#308">308</a>                             <strong class="jxr_keyword">for</strong> (DeleteRequest dr : reqbatch) {
+<a class="jxr_linenumber" name="309" href="#309">309</a>                                 dr.error(ioe);
+<a class="jxr_linenumber" name="310" href="#310">310</a>                             }
+<a class="jxr_linenumber" name="311" href="#311">311</a>                         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="312" href="#312">312</a>                             reqbatch.clear();
+<a class="jxr_linenumber" name="313" href="#313">313</a>                         }
+<a class="jxr_linenumber" name="314" href="#314">314</a>                     }
+<a class="jxr_linenumber" name="315" href="#315">315</a>                 }
+<a class="jxr_linenumber" name="316" href="#316">316</a>             } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
+<a class="jxr_linenumber" name="317" href="#317">317</a>                 <em class="jxr_comment">// Drain the queue and place the exception in the future</em>
+<a class="jxr_linenumber" name="318" href="#318">318</a>                 <em class="jxr_comment">// for those who placed requests</em>
+<a class="jxr_linenumber" name="319" href="#319">319</a>                 LOG.warn(<span class="jxr_string">"Draining delete queue"</span>);
+<a class="jxr_linenumber" name="320" href="#320">320</a>                 <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> queuedRequest = deleteQueue.poll();
+<a class="jxr_linenumber" name="321" href="#321">321</a>                 <strong class="jxr_keyword">while</strong> (queuedRequest != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="322" href="#322">322</a>                     reqbatch.add(queuedRequest);
+<a class="jxr_linenumber" name="323" href="#323">323</a>                     queuedRequest = deleteQueue.poll();
+<a class="jxr_linenumber" name="324" href="#324">324</a>                 }
+<a class="jxr_linenumber" name="325" href="#325">325</a>                 <strong class="jxr_keyword">for</strong> (DeleteRequest dr : reqbatch) {
+<a class="jxr_linenumber" name="326" href="#326">326</a>                     dr.error(<strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"HBase CommitTable is going to be closed"</span>));
+<a class="jxr_linenumber" name="327" href="#327">327</a>                 }
+<a class="jxr_linenumber" name="328" href="#328">328</a>                 reqbatch.clear();
+<a class="jxr_linenumber" name="329" href="#329">329</a>                 Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="330" href="#330">330</a>             } <strong class="jxr_keyword">catch</strong> (Throwable t) {
+<a class="jxr_linenumber" name="331" href="#331">331</a>                 LOG.error(<span class="jxr_string">"Transaction completion thread threw exception"</span>, t);
+<a class="jxr_linenumber" name="332" href="#332">332</a>             }
+<a class="jxr_linenumber" name="333" href="#333">333</a>         }
+<a class="jxr_linenumber" name="334" href="#334">334</a> 
+<a class="jxr_linenumber" name="335" href="#335">335</a>         @Override
+<a class="jxr_linenumber" name="336" href="#336">336</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="337" href="#337">337</a>             isClosed = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="338" href="#338">338</a>             deleteBatchExecutor.shutdownNow(); <em class="jxr_comment">// may need to interrupt take</em>
+<a class="jxr_linenumber" name="339" href="#339">339</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="340" href="#340">340</a>                 <strong class="jxr_keyword">if</strong> (!deleteBatchExecutor.awaitTermination(10, TimeUnit.SECONDS)) {
+<a class="jxr_linenumber" name="341" href="#341">341</a>                     LOG.warn(<span class="jxr_string">"Delete executor did not shutdown"</span>);
+<a class="jxr_linenumber" name="342" href="#342">342</a>                 }
+<a class="jxr_linenumber" name="343" href="#343">343</a>             } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
+<a class="jxr_linenumber" name="344" href="#344">344</a>                 Thread.currentThread().interrupt();
+<a class="jxr_linenumber" name="345" href="#345">345</a>             }
+<a class="jxr_linenumber" name="346" href="#346">346</a> 
+<a class="jxr_linenumber" name="347" href="#347">347</a>             LOG.warn(<span class="jxr_string">"Re-Draining delete queue just in case"</span>);
+<a class="jxr_linenumber" name="348" href="#348">348</a>             <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> queuedRequest = deleteQueue.poll();
+<a class="jxr_linenumber" name="349" href="#349">349</a>             <strong class="jxr_keyword">while</strong> (queuedRequest != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="350" href="#350">350</a>                 queuedRequest.error(<strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"HBase CommitTable is going to be closed"</span>));
+<a class="jxr_linenumber" name="351" href="#351">351</a>                 queuedRequest = deleteQueue.poll();
+<a class="jxr_linenumber" name="352" href="#352">352</a>             }
 <a class="jxr_linenumber" name="353" href="#353">353</a> 
-<a class="jxr_linenumber" name="354" href="#354">354</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> containsInvalidTransaction(Result result) {
-<a class="jxr_linenumber" name="355" href="#355">355</a>             <strong class="jxr_keyword">return</strong> (result != <strong class="jxr_keyword">null</strong> &amp;&amp; result.containsColumn(commitTableFamily, INVALID_TX_QUALIFIER));
+<a class="jxr_linenumber" name="354" href="#354">354</a>             deleteTable.close();
+<a class="jxr_linenumber" name="355" href="#355">355</a>             table.close();
 <a class="jxr_linenumber" name="356" href="#356">356</a>         }
 <a class="jxr_linenumber" name="357" href="#357">357</a> 
-<a class="jxr_linenumber" name="358" href="#358">358</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> containsLowWatermark(Result result) {
-<a class="jxr_linenumber" name="359" href="#359">359</a>             <strong class="jxr_keyword">return</strong> (result != <strong class="jxr_keyword">null</strong> &amp;&amp; result.containsColumn(lowWatermarkFamily, LOW_WATERMARK_QUALIFIER));
+<a class="jxr_linenumber" name="358" href="#358">358</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> containsATimestamp(Result result) {
+<a class="jxr_linenumber" name="359" href="#359">359</a>             <strong class="jxr_keyword">return</strong> (result != <strong class="jxr_keyword">null</strong> &amp;&amp; result.containsColumn(commitTableFamily, COMMIT_TABLE_QUALIFIER));
 <a class="jxr_linenumber" name="360" href="#360">360</a>         }
 <a class="jxr_linenumber" name="361" href="#361">361</a> 
-<a class="jxr_linenumber" name="362" href="#362">362</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/omid/committable/hbase/HBaseCommitTable.html">DeleteRequest</a> <strong class="jxr_keyword"

<TRUNCATED>


[04/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/package-frame.html b/xref/org/apache/omid/transaction/package-frame.html
index d06d909..e8e4308 100644
--- a/xref/org/apache/omid/transaction/package-frame.html
+++ b/xref/org/apache/omid/transaction/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.transaction</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.transaction</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -22,6 +22,9 @@
             	<a href="AbstractTransactionManager.html" target="classFrame">AbstractTransactionManager</a>
           	</li>
           	          	<li>
+            	<a href="AttributeSetSnapshotFilter.html" target="classFrame">AttributeSetSnapshotFilter</a>
+          	</li>
+          	          	<li>
             	<a href="HBaseTransactionManager.html" target="classFrame">Builder</a>
           	</li>
           	          	<li>
@@ -34,6 +37,9 @@
             	<a href="CellInfo.html" target="classFrame">CellInfo</a>
           	</li>
           	          	<li>
+            	<a href="CellSkipFilterBase.html" target="classFrame">CellSkipFilterBase</a>
+          	</li>
+          	          	<li>
             	<a href="CellUtils.html" target="classFrame">CellUtils</a>
           	</li>
           	          	<li>
@@ -46,9 +52,6 @@
             	<a href="HBaseTransactionManager.html" target="classFrame">CommitTimestampLocatorImpl</a>
           	</li>
           	          	<li>
-            	<a href="CompactorScanner.html" target="classFrame">CompactorScanner</a>
-          	</li>
-          	          	<li>
             	<a href="CompactorUtil.html" target="classFrame">CompactorUtil</a>
           	</li>
           	          	<li>
@@ -82,18 +85,30 @@
             	<a href="HRegionCellGetterAdapter.html" target="classFrame">HRegionCellGetterAdapter</a>
           	</li>
           	          	<li>
+            	<a href="HTableAccessWrapper.html" target="classFrame">HTableAccessWrapper</a>
+          	</li>
+          	          	<li>
             	<a href="OmidCompactor.html" target="classFrame">OmidCompactor</a>
           	</li>
           	          	<li>
+            	<a href="OmidSnapshotFilter.html" target="classFrame">OmidSnapshotFilter</a>
+          	</li>
+          	          	<li>
             	<a href="PostCommitActions.html" target="classFrame">PostCommitActions</a>
           	</li>
           	          	<li>
-            	<a href="TTable.html" target="classFrame">ResultIterator</a>
+            	<a href="SnapshotFilterImpl.html" target="classFrame">ResultIterator</a>
           	</li>
           	          	<li>
             	<a href="RollbackException.html" target="classFrame">RollbackException</a>
           	</li>
           	          	<li>
+            	<a href="SnapshotFilter.html" target="classFrame">SnapshotFilter</a>
+          	</li>
+          	          	<li>
+            	<a href="SnapshotFilterImpl.html" target="classFrame">SnapshotFilterImpl</a>
+          	</li>
+          	          	<li>
             	<a href="Transaction.html" target="classFrame">Status</a>
           	</li>
           	          	<li>
@@ -103,6 +118,9 @@
             	<a href="TTableCellGetterAdapter.html" target="classFrame">TTableCellGetterAdapter</a>
           	</li>
           	          	<li>
+            	<a href="TableAccessWrapper.html" target="classFrame">TableAccessWrapper</a>
+          	</li>
+          	          	<li>
             	<a href="Transaction.html" target="classFrame">Transaction</a>
           	</li>
           	          	<li>
@@ -112,13 +130,22 @@
             	<a href="AbstractTransactionManager.html" target="classFrame">TransactionFactory</a>
           	</li>
           	          	<li>
+            	<a href="TransactionFilters.html" target="classFrame">TransactionFilters</a>
+          	</li>
+          	          	<li>
             	<a href="TransactionManager.html" target="classFrame">TransactionManager</a>
           	</li>
           	          	<li>
             	<a href="TransactionManagerException.html" target="classFrame">TransactionManagerException</a>
           	</li>
           	          	<li>
-            	<a href="TTable.html" target="classFrame">TransactionalClientScanner</a>
+            	<a href="TransactionVisibilityFilterBase.html" target="classFrame">TransactionVisibilityFilterBase</a>
+          	</li>
+          	          	<li>
+            	<a href="SnapshotFilterImpl.html" target="classFrame">TransactionalClientScanner</a>
+          	</li>
+          	          	<li>
+            	<a href="AbstractTransaction.html" target="classFrame">VisibilityLevel</a>
           	</li>
           	      	</ul>
 

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/transaction/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/transaction/package-summary.html b/xref/org/apache/omid/transaction/package-summary.html
index c398a80..930893f 100644
--- a/xref/org/apache/omid/transaction/package-summary.html
+++ b/xref/org/apache/omid/transaction/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.transaction</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.transaction</title>
 		<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" />
 	</head>
 	<body>
@@ -47,6 +47,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="AttributeSetSnapshotFilter.html" target="classFrame">AttributeSetSnapshotFilter</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="HBaseTransactionManager.html" target="classFrame">Builder</a>
               		</td>
             	</tr>
@@ -67,27 +72,27 @@
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="CellUtils.html" target="classFrame">CellUtils</a>
+                		<a href="CellSkipFilterBase.html" target="classFrame">CellSkipFilterBase</a>
               		</td>
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="ColumnWrapper.html" target="classFrame">ColumnWrapper</a>
+                		<a href="CellUtils.html" target="classFrame">CellUtils</a>
               		</td>
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="CommitTimestampLocator.html" target="classFrame">CommitTimestampLocator</a>
+                		<a href="ColumnWrapper.html" target="classFrame">ColumnWrapper</a>
               		</td>
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="HBaseTransactionManager.html" target="classFrame">CommitTimestampLocatorImpl</a>
+                		<a href="CommitTimestampLocator.html" target="classFrame">CommitTimestampLocator</a>
               		</td>
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="CompactorScanner.html" target="classFrame">CompactorScanner</a>
+                		<a href="HBaseTransactionManager.html" target="classFrame">CommitTimestampLocatorImpl</a>
               		</td>
             	</tr>
 				            	<tr>
@@ -147,17 +152,27 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="HTableAccessWrapper.html" target="classFrame">HTableAccessWrapper</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="OmidCompactor.html" target="classFrame">OmidCompactor</a>
               		</td>
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="OmidSnapshotFilter.html" target="classFrame">OmidSnapshotFilter</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="PostCommitActions.html" target="classFrame">PostCommitActions</a>
               		</td>
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="TTable.html" target="classFrame">ResultIterator</a>
+                		<a href="SnapshotFilterImpl.html" target="classFrame">ResultIterator</a>
               		</td>
             	</tr>
 				            	<tr>
@@ -167,6 +182,16 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="SnapshotFilter.html" target="classFrame">SnapshotFilter</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
+                		<a href="SnapshotFilterImpl.html" target="classFrame">SnapshotFilterImpl</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="Transaction.html" target="classFrame">Status</a>
               		</td>
             	</tr>
@@ -182,6 +207,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="TableAccessWrapper.html" target="classFrame">TableAccessWrapper</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="Transaction.html" target="classFrame">Transaction</a>
               		</td>
             	</tr>
@@ -197,6 +227,11 @@
             	</tr>
 				            	<tr>
               		<td>
+                		<a href="TransactionFilters.html" target="classFrame">TransactionFilters</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
                 		<a href="TransactionManager.html" target="classFrame">TransactionManager</a>
               		</td>
             	</tr>
@@ -207,7 +242,17 @@
             	</tr>
 				            	<tr>
               		<td>
-                		<a href="TTable.html" target="classFrame">TransactionalClientScanner</a>
+                		<a href="TransactionVisibilityFilterBase.html" target="classFrame">TransactionVisibilityFilterBase</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
+                		<a href="SnapshotFilterImpl.html" target="classFrame">TransactionalClientScanner</a>
+              		</td>
+            	</tr>
+				            	<tr>
+              		<td>
+                		<a href="AbstractTransaction.html" target="classFrame">VisibilityLevel</a>
               		</td>
             	</tr>
 				        	</tbody>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/Batch.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/Batch.html b/xref/org/apache/omid/tso/Batch.html
index ce71ba6..c684e25 100644
--- a/xref/org/apache/omid/tso/Batch.html
+++ b/xref/org/apache/omid/tso/Batch.html
@@ -113,74 +113,84 @@
 <a class="jxr_linenumber" name="103" href="#103">103</a> 
 <a class="jxr_linenumber" name="104" href="#104">104</a>     }
 <a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>     <strong class="jxr_keyword">void</strong> addCommit(<strong class="jxr_keyword">long</strong> startTimestamp, <strong class="jxr_keyword">long</strong> commitTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context) {
+<a class="jxr_linenumber" name="106" href="#106">106</a>     <strong class="jxr_keyword">void</strong> addFence(<strong class="jxr_keyword">long</strong> tableID, <strong class="jxr_keyword">long</strong> fenceTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context) {
 <a class="jxr_linenumber" name="107" href="#107">107</a> 
 <a class="jxr_linenumber" name="108" href="#108">108</a>         Preconditions.checkState(!isFull(), <span class="jxr_string">"batch is full"</span>);
 <a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">int</strong> index = numEvents++;
 <a class="jxr_linenumber" name="110" href="#110">110</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> e = events[index];
-<a class="jxr_linenumber" name="111" href="#111">111</a>         context.timerStart(<span class="jxr_string">"persistence.processor.commit.latency"</span>);
-<a class="jxr_linenumber" name="112" href="#112">112</a>         e.makePersistCommit(startTimestamp, commitTimestamp, c, context);
+<a class="jxr_linenumber" name="111" href="#111">111</a>         context.timerStart(<span class="jxr_string">"persistence.processor.fence.latency"</span>);
+<a class="jxr_linenumber" name="112" href="#112">112</a>         e.makePersistFence(tableID, fenceTimestamp, c, context);
 <a class="jxr_linenumber" name="113" href="#113">113</a> 
 <a class="jxr_linenumber" name="114" href="#114">114</a>     }
 <a class="jxr_linenumber" name="115" href="#115">115</a> 
-<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">void</strong> addCommitRetry(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context) {
+<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">void</strong> addCommit(<strong class="jxr_keyword">long</strong> startTimestamp, <strong class="jxr_keyword">long</strong> commitTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context) {
 <a class="jxr_linenumber" name="117" href="#117">117</a> 
 <a class="jxr_linenumber" name="118" href="#118">118</a>         Preconditions.checkState(!isFull(), <span class="jxr_string">"batch is full"</span>);
 <a class="jxr_linenumber" name="119" href="#119">119</a>         <strong class="jxr_keyword">int</strong> index = numEvents++;
 <a class="jxr_linenumber" name="120" href="#120">120</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> e = events[index];
-<a class="jxr_linenumber" name="121" href="#121">121</a>         context.timerStart(<span class="jxr_string">"persistence.processor.commit-retry.latency"</span>);
-<a class="jxr_linenumber" name="122" href="#122">122</a>         e.makeCommitRetry(startTimestamp, c, context);
+<a class="jxr_linenumber" name="121" href="#121">121</a>         context.timerStart(<span class="jxr_string">"persistence.processor.commit.latency"</span>);
+<a class="jxr_linenumber" name="122" href="#122">122</a>         e.makePersistCommit(startTimestamp, commitTimestamp, c, context);
 <a class="jxr_linenumber" name="123" href="#123">123</a> 
 <a class="jxr_linenumber" name="124" href="#124">124</a>     }
 <a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>     <strong class="jxr_keyword">void</strong> addAbort(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context) {
+<a class="jxr_linenumber" name="126" href="#126">126</a>     <strong class="jxr_keyword">void</strong> addCommitRetry(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context) {
 <a class="jxr_linenumber" name="127" href="#127">127</a> 
 <a class="jxr_linenumber" name="128" href="#128">128</a>         Preconditions.checkState(!isFull(), <span class="jxr_string">"batch is full"</span>);
 <a class="jxr_linenumber" name="129" href="#129">129</a>         <strong class="jxr_keyword">int</strong> index = numEvents++;
 <a class="jxr_linenumber" name="130" href="#130">130</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> e = events[index];
-<a class="jxr_linenumber" name="131" href="#131">131</a>         context.timerStart(<span class="jxr_string">"persistence.processor.abort.latency"</span>);
-<a class="jxr_linenumber" name="132" href="#132">132</a>         e.makePersistAbort(startTimestamp, c, context);
+<a class="jxr_linenumber" name="131" href="#131">131</a>         context.timerStart(<span class="jxr_string">"persistence.processor.commit-retry.latency"</span>);
+<a class="jxr_linenumber" name="132" href="#132">132</a>         e.makeCommitRetry(startTimestamp, c, context);
 <a class="jxr_linenumber" name="133" href="#133">133</a> 
 <a class="jxr_linenumber" name="134" href="#134">134</a>     }
 <a class="jxr_linenumber" name="135" href="#135">135</a> 
-<a class="jxr_linenumber" name="136" href="#136">136</a>     @Override
-<a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="138" href="#138">138</a>         <strong class="jxr_keyword">return</strong> Objects.toStringHelper(<strong class="jxr_keyword">this</strong>)
-<a class="jxr_linenumber" name="139" href="#139">139</a>                 .add(<span class="jxr_string">"id"</span>, id)
-<a class="jxr_linenumber" name="140" href="#140">140</a>                 .add(<span class="jxr_string">"size"</span>, size)
-<a class="jxr_linenumber" name="141" href="#141">141</a>                 .add(<span class="jxr_string">"num events"</span>, numEvents)
-<a class="jxr_linenumber" name="142" href="#142">142</a>                 .add(<span class="jxr_string">"events"</span>, Arrays.toString(events))
-<a class="jxr_linenumber" name="143" href="#143">143</a>                 .toString();
+<a class="jxr_linenumber" name="136" href="#136">136</a>     <strong class="jxr_keyword">void</strong> addAbort(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> context) {
+<a class="jxr_linenumber" name="137" href="#137">137</a> 
+<a class="jxr_linenumber" name="138" href="#138">138</a>         Preconditions.checkState(!isFull(), <span class="jxr_string">"batch is full"</span>);
+<a class="jxr_linenumber" name="139" href="#139">139</a>         <strong class="jxr_keyword">int</strong> index = numEvents++;
+<a class="jxr_linenumber" name="140" href="#140">140</a>         <a href="../../../../org/apache/omid/tso/PersistEvent.html">PersistEvent</a> e = events[index];
+<a class="jxr_linenumber" name="141" href="#141">141</a>         context.timerStart(<span class="jxr_string">"persistence.processor.abort.latency"</span>);
+<a class="jxr_linenumber" name="142" href="#142">142</a>         e.makePersistAbort(startTimestamp, c, context);
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
 <a class="jxr_linenumber" name="144" href="#144">144</a>     }
 <a class="jxr_linenumber" name="145" href="#145">145</a> 
-<a class="jxr_linenumber" name="146" href="#146">146</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/Batch.html">BatchFactory</a> <strong class="jxr_keyword">extends</strong> BasePooledObjectFactory&lt;Batch&gt; {
-<a class="jxr_linenumber" name="147" href="#147">147</a> 
-<a class="jxr_linenumber" name="148" href="#148">148</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> batchId = 0;
-<a class="jxr_linenumber" name="149" href="#149">149</a> 
-<a class="jxr_linenumber" name="150" href="#150">150</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> batchSize;
-<a class="jxr_linenumber" name="151" href="#151">151</a> 
-<a class="jxr_linenumber" name="152" href="#152">152</a>         <a href="../../../../org/apache/omid/tso/Batch.html">BatchFactory</a>(<strong class="jxr_keyword">int</strong> batchSize) {
-<a class="jxr_linenumber" name="153" href="#153">153</a>             <strong class="jxr_keyword">this</strong>.batchSize = batchSize;
-<a class="jxr_linenumber" name="154" href="#154">154</a>         }
+<a class="jxr_linenumber" name="146" href="#146">146</a>     @Override
+<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">public</strong> String toString() {
+<a class="jxr_linenumber" name="148" href="#148">148</a>         <strong class="jxr_keyword">return</strong> Objects.toStringHelper(<strong class="jxr_keyword">this</strong>)
+<a class="jxr_linenumber" name="149" href="#149">149</a>                 .add(<span class="jxr_string">"id"</span>, id)
+<a class="jxr_linenumber" name="150" href="#150">150</a>                 .add(<span class="jxr_string">"size"</span>, size)
+<a class="jxr_linenumber" name="151" href="#151">151</a>                 .add(<span class="jxr_string">"num events"</span>, numEvents)
+<a class="jxr_linenumber" name="152" href="#152">152</a>                 .add(<span class="jxr_string">"events"</span>, Arrays.toString(events))
+<a class="jxr_linenumber" name="153" href="#153">153</a>                 .toString();
+<a class="jxr_linenumber" name="154" href="#154">154</a>     }
 <a class="jxr_linenumber" name="155" href="#155">155</a> 
-<a class="jxr_linenumber" name="156" href="#156">156</a>         @Override
-<a class="jxr_linenumber" name="157" href="#157">157</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> create() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="158" href="#158">158</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a>(batchId++, batchSize);
-<a class="jxr_linenumber" name="159" href="#159">159</a>         }
-<a class="jxr_linenumber" name="160" href="#160">160</a> 
-<a class="jxr_linenumber" name="161" href="#161">161</a>         @Override
-<a class="jxr_linenumber" name="162" href="#162">162</a>         <strong class="jxr_keyword">public</strong> PooledObject&lt;Batch&gt; wrap(<a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch) {
-<a class="jxr_linenumber" name="163" href="#163">163</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> DefaultPooledObject&lt;&gt;(batch);
+<a class="jxr_linenumber" name="156" href="#156">156</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/Batch.html">BatchFactory</a> <strong class="jxr_keyword">extends</strong> BasePooledObjectFactory&lt;Batch&gt; {
+<a class="jxr_linenumber" name="157" href="#157">157</a> 
+<a class="jxr_linenumber" name="158" href="#158">158</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> batchId = 0;
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> batchSize;
+<a class="jxr_linenumber" name="161" href="#161">161</a> 
+<a class="jxr_linenumber" name="162" href="#162">162</a>         <a href="../../../../org/apache/omid/tso/Batch.html">BatchFactory</a>(<strong class="jxr_keyword">int</strong> batchSize) {
+<a class="jxr_linenumber" name="163" href="#163">163</a>             <strong class="jxr_keyword">this</strong>.batchSize = batchSize;
 <a class="jxr_linenumber" name="164" href="#164">164</a>         }
 <a class="jxr_linenumber" name="165" href="#165">165</a> 
 <a class="jxr_linenumber" name="166" href="#166">166</a>         @Override
-<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> passivateObject(PooledObject&lt;Batch&gt; pooledObject) {
-<a class="jxr_linenumber" name="168" href="#168">168</a>             pooledObject.getObject().clear(); <em class="jxr_comment">// Reset num events when returning the batch to the pool</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> create() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="168" href="#168">168</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/omid/tso/Batch.html">Batch</a>(batchId++, batchSize);
 <a class="jxr_linenumber" name="169" href="#169">169</a>         }
 <a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>     }
-<a class="jxr_linenumber" name="172" href="#172">172</a> 
-<a class="jxr_linenumber" name="173" href="#173">173</a> }
+<a class="jxr_linenumber" name="171" href="#171">171</a>         @Override
+<a class="jxr_linenumber" name="172" href="#172">172</a>         <strong class="jxr_keyword">public</strong> PooledObject&lt;Batch&gt; wrap(<a href="../../../../org/apache/omid/tso/Batch.html">Batch</a> batch) {
+<a class="jxr_linenumber" name="173" href="#173">173</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> DefaultPooledObject&lt;&gt;(batch);
+<a class="jxr_linenumber" name="174" href="#174">174</a>         }
+<a class="jxr_linenumber" name="175" href="#175">175</a> 
+<a class="jxr_linenumber" name="176" href="#176">176</a>         @Override
+<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> passivateObject(PooledObject&lt;Batch&gt; pooledObject) {
+<a class="jxr_linenumber" name="178" href="#178">178</a>             pooledObject.getObject().clear(); <em class="jxr_comment">// Reset num events when returning the batch to the pool</em>
+<a class="jxr_linenumber" name="179" href="#179">179</a>         }
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>     }
+<a class="jxr_linenumber" name="182" href="#182">182</a> 
+<a class="jxr_linenumber" name="183" href="#183">183</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/BatchPoolModule.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/BatchPoolModule.html b/xref/org/apache/omid/tso/BatchPoolModule.html
index 771da63..ff2dbd8 100644
--- a/xref/org/apache/omid/tso/BatchPoolModule.html
+++ b/xref/org/apache/omid/tso/BatchPoolModule.html
@@ -62,27 +62,23 @@
 <a class="jxr_linenumber" name="52" href="#52">52</a>  
 <a class="jxr_linenumber" name="53" href="#53">53</a>          LOG.info(<span class="jxr_string">"Pool Size (# of Batches) {}; Batch Size {}"</span>, poolSize, batchSize);
 <a class="jxr_linenumber" name="54" href="#54">54</a>          LOG.info(<span class="jxr_string">"Total Batch Size (Pool size * Batch Size): {}"</span>, poolSize * batchSize);
-<a class="jxr_linenumber" name="55" href="#55">55</a>          <em class="jxr_comment">// Setup ObjectPool behaviour</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>          GenericObjectPoolConfig config = <strong class="jxr_keyword">new</strong> GenericObjectPoolConfig();
-<a class="jxr_linenumber" name="57" href="#57">57</a>          config.setMaxTotal(poolSize);
-<a class="jxr_linenumber" name="58" href="#58">58</a>          config.setMaxIdle(poolSize + 1); <em class="jxr_comment">// This avoids GenericObjectPool to destroy the batches when returned to</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>                                           <em class="jxr_comment">// the pool during the pre-creation below</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>          config.setBlockWhenExhausted(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="61" href="#61">61</a>          GenericObjectPool&lt;Batch&gt; batchPool = <strong class="jxr_keyword">new</strong> GenericObjectPool&lt;&gt;(<strong class="jxr_keyword">new</strong> Batch.BatchFactory(batchSize), config);
-<a class="jxr_linenumber" name="62" href="#62">62</a>          LOG.info(<span class="jxr_string">"Pre-creating objects in the pool..."</span>);
-<a class="jxr_linenumber" name="63" href="#63">63</a>          <em class="jxr_comment">// TODO There should be a better way to do the pre-creation below avoiding the two loops</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>          List&lt;Batch&gt; batches = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;(poolSize);
-<a class="jxr_linenumber" name="65" href="#65">65</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; poolSize; i++) {
-<a class="jxr_linenumber" name="66" href="#66">66</a>              batches.add(batchPool.borrowObject());
-<a class="jxr_linenumber" name="67" href="#67">67</a>          }
-<a class="jxr_linenumber" name="68" href="#68">68</a>          <strong class="jxr_keyword">for</strong> (Batch batch : batches) {
-<a class="jxr_linenumber" name="69" href="#69">69</a>              batchPool.returnObject(batch);
-<a class="jxr_linenumber" name="70" href="#70">70</a>          }
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">return</strong> batchPool;
-<a class="jxr_linenumber" name="72" href="#72">72</a>  
-<a class="jxr_linenumber" name="73" href="#73">73</a>      }
-<a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>  }
+<a class="jxr_linenumber" name="55" href="#55">55</a>          GenericObjectPoolConfig config = <strong class="jxr_keyword">new</strong> GenericObjectPoolConfig();
+<a class="jxr_linenumber" name="56" href="#56">56</a>          config.setMaxTotal(poolSize);
+<a class="jxr_linenumber" name="57" href="#57">57</a>          config.setBlockWhenExhausted(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="58" href="#58">58</a>          GenericObjectPool&lt;Batch&gt; batchPool = <strong class="jxr_keyword">new</strong> GenericObjectPool&lt;&gt;(<strong class="jxr_keyword">new</strong> Batch.BatchFactory(batchSize), config);
+<a class="jxr_linenumber" name="59" href="#59">59</a>          LOG.info(<span class="jxr_string">"Pre-creating objects in the pool..."</span>); <em class="jxr_comment">// TODO There should be a better way to do this</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>          List&lt;Batch&gt; batches = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;(poolSize);
+<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; poolSize; i++) {
+<a class="jxr_linenumber" name="62" href="#62">62</a>              batches.add(batchPool.borrowObject());
+<a class="jxr_linenumber" name="63" href="#63">63</a>          }
+<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">for</strong> (Batch batch : batches) {
+<a class="jxr_linenumber" name="65" href="#65">65</a>              batchPool.returnObject(batch);
+<a class="jxr_linenumber" name="66" href="#66">66</a>          }
+<a class="jxr_linenumber" name="67" href="#67">67</a>          <strong class="jxr_keyword">return</strong> batchPool;
+<a class="jxr_linenumber" name="68" href="#68">68</a>  
+<a class="jxr_linenumber" name="69" href="#69">69</a>      }
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/CacheEvaluation.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/CacheEvaluation.html b/xref/org/apache/omid/tso/CacheEvaluation.html
index 5dc0213..b7ca1cb 100644
--- a/xref/org/apache/omid/tso/CacheEvaluation.html
+++ b/xref/org/apache/omid/tso/CacheEvaluation.html
@@ -106,7 +106,7 @@
 <a class="jxr_linenumber" name="96" href="#96">96</a>          Runtime.getRuntime().gc();
 <a class="jxr_linenumber" name="97" href="#97">97</a>          writer.println(<span class="jxr_string">"# Free mem (MB) :"</span> + (Runtime.getRuntime().freeMemory() / (<strong class="jxr_keyword">double</strong>) (1024 * 1024)));
 <a class="jxr_linenumber" name="98" href="#98">98</a>          writer.println(<span class="jxr_string">"# Elapsed (s): "</span> + elapsedSeconds);
-<a class="jxr_linenumber" name="99" href="#99">99</a>          writer.println(<span class="jxr_string">"# Elapsed per 100 ops (ms): "</span> + (elapsed / (<strong class="jxr_keyword">double</strong>) totalOps / 100 / (<strong class="jxr_keyword">double</strong>) 1000000));
+<a class="jxr_linenumber" name="99" href="#99">99</a>          writer.println(<span class="jxr_string">"# Elapsed per 100 ops (ms): "</span> + (elapsed / (<strong class="jxr_keyword">double</strong>) totalOps / 100 / 1000000));
 <a class="jxr_linenumber" name="100" href="#100">100</a>         writer.println(<span class="jxr_string">"# Ops per s : "</span> + (totalOps / elapsedSeconds));
 <a class="jxr_linenumber" name="101" href="#101">101</a>         writer.println(<span class="jxr_string">"# Avg gap: "</span> + (tempAvg));
 <a class="jxr_linenumber" name="102" href="#102">102</a>         writer.println(<span class="jxr_string">"# Std dev gap: "</span> + Math.sqrt((tempStdDev / ENTRIES)));

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/PersistEvent.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/PersistEvent.html b/xref/org/apache/omid/tso/PersistEvent.html
index da901d0..b575b31 100644
--- a/xref/org/apache/omid/tso/PersistEvent.html
+++ b/xref/org/apache/omid/tso/PersistEvent.html
@@ -35,7 +35,7 @@
 <a class="jxr_linenumber" name="25" href="#25">25</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx;
 <a class="jxr_linenumber" name="26" href="#26">26</a>  
 <a class="jxr_linenumber" name="27" href="#27">27</a>      enum <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> {
-<a class="jxr_linenumber" name="28" href="#28">28</a>          TIMESTAMP, COMMIT, ABORT, COMMIT_RETRY
+<a class="jxr_linenumber" name="28" href="#28">28</a>          TIMESTAMP, COMMIT, ABORT, COMMIT_RETRY, FENCE
 <a class="jxr_linenumber" name="29" href="#29">29</a>      }
 <a class="jxr_linenumber" name="30" href="#30">30</a>  
 <a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> type = <strong class="jxr_keyword">null</strong>;
@@ -81,46 +81,56 @@
 <a class="jxr_linenumber" name="71" href="#71">71</a>  
 <a class="jxr_linenumber" name="72" href="#72">72</a>      }
 <a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>      <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> getMonCtx() {
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">void</strong> makePersistFence(<strong class="jxr_keyword">long</strong> tableID, <strong class="jxr_keyword">long</strong> fenceTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) {
 <a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">return</strong> monCtx;
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>      }
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>      <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> getType() {
+<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">this</strong>.type = Type.FENCE;
+<a class="jxr_linenumber" name="77" href="#77">77</a>          <strong class="jxr_keyword">this</strong>.startTimestamp = tableID;
+<a class="jxr_linenumber" name="78" href="#78">78</a>          <strong class="jxr_keyword">this</strong>.commitTimestamp = fenceTimestamp;
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">this</strong>.channel = c;
+<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">this</strong>.monCtx = monCtx;
 <a class="jxr_linenumber" name="81" href="#81">81</a>  
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <strong class="jxr_keyword">return</strong> type;
+<a class="jxr_linenumber" name="82" href="#82">82</a>      }
 <a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>      }
+<a class="jxr_linenumber" name="84" href="#84">84</a>      <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> getMonCtx() {
 <a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>      Channel getChannel() {
+<a class="jxr_linenumber" name="86" href="#86">86</a>          <strong class="jxr_keyword">return</strong> monCtx;
 <a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>          <strong class="jxr_keyword">return</strong> channel;
+<a class="jxr_linenumber" name="88" href="#88">88</a>      }
 <a class="jxr_linenumber" name="89" href="#89">89</a>  
-<a class="jxr_linenumber" name="90" href="#90">90</a>      }
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <a href="../../../../org/apache/omid/tso/PersistEvent.html">Type</a> getType() {
 <a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">long</strong> getStartTimestamp() {
+<a class="jxr_linenumber" name="92" href="#92">92</a>          <strong class="jxr_keyword">return</strong> type;
 <a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">return</strong> startTimestamp;
+<a class="jxr_linenumber" name="94" href="#94">94</a>      }
 <a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>      }
+<a class="jxr_linenumber" name="96" href="#96">96</a>      Channel getChannel() {
 <a class="jxr_linenumber" name="97" href="#97">97</a>  
-<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">long</strong> getCommitTimestamp() {
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <strong class="jxr_keyword">return</strong> channel;
 <a class="jxr_linenumber" name="99" href="#99">99</a>  
-<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">return</strong> commitTimestamp;
+<a class="jxr_linenumber" name="100" href="#100">100</a>     }
 <a class="jxr_linenumber" name="101" href="#101">101</a> 
-<a class="jxr_linenumber" name="102" href="#102">102</a>     }
+<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">long</strong> getStartTimestamp() {
 <a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>     @Override
-<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">return</strong> Objects.toStringHelper(<strong class="jxr_keyword">this</strong>)
-<a class="jxr_linenumber" name="107" href="#107">107</a>                 .add(<span class="jxr_string">"type"</span>, type)
-<a class="jxr_linenumber" name="108" href="#108">108</a>                 .add(<span class="jxr_string">"ST"</span>, startTimestamp)
-<a class="jxr_linenumber" name="109" href="#109">109</a>                 .add(<span class="jxr_string">"CT"</span>, commitTimestamp)
-<a class="jxr_linenumber" name="110" href="#110">110</a>                 .toString();
-<a class="jxr_linenumber" name="111" href="#111">111</a>     }
-<a class="jxr_linenumber" name="112" href="#112">112</a> 
-<a class="jxr_linenumber" name="113" href="#113">113</a> }
+<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">return</strong> startTimestamp;
+<a class="jxr_linenumber" name="105" href="#105">105</a> 
+<a class="jxr_linenumber" name="106" href="#106">106</a>     }
+<a class="jxr_linenumber" name="107" href="#107">107</a> 
+<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">long</strong> getCommitTimestamp() {
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">return</strong> commitTimestamp;
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>     }
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>     @Override
+<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">public</strong> String toString() {
+<a class="jxr_linenumber" name="116" href="#116">116</a>         <strong class="jxr_keyword">return</strong> Objects.toStringHelper(<strong class="jxr_keyword">this</strong>)
+<a class="jxr_linenumber" name="117" href="#117">117</a>                 .add(<span class="jxr_string">"type"</span>, type)
+<a class="jxr_linenumber" name="118" href="#118">118</a>                 .add(<span class="jxr_string">"ST"</span>, startTimestamp)
+<a class="jxr_linenumber" name="119" href="#119">119</a>                 .add(<span class="jxr_string">"CT"</span>, commitTimestamp)
+<a class="jxr_linenumber" name="120" href="#120">120</a>                 .toString();
+<a class="jxr_linenumber" name="121" href="#121">121</a>     }
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/tso/PersistenceProcessor.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/tso/PersistenceProcessor.html b/xref/org/apache/omid/tso/PersistenceProcessor.html
index 2d84bb3..804db95 100644
--- a/xref/org/apache/omid/tso/PersistenceProcessor.html
+++ b/xref/org/apache/omid/tso/PersistenceProcessor.html
@@ -43,10 +43,12 @@
 <a class="jxr_linenumber" name="33" href="#33">33</a>  
 <a class="jxr_linenumber" name="34" href="#34">34</a>      <strong class="jxr_keyword">void</strong> addTimestampToBatch(<strong class="jxr_keyword">long</strong> startTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) <strong class="jxr_keyword">throws</strong> Exception;
 <a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">void</strong> triggerCurrentBatchFlush() <strong class="jxr_keyword">throws</strong> Exception;
+<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">void</strong> addFenceToBatch(<strong class="jxr_keyword">long</strong> tableID, <strong class="jxr_keyword">long</strong> fenceTimestamp, Channel c, <a href="../../../../org/apache/omid/tso/MonitoringContext.html">MonitoringContext</a> monCtx) <strong class="jxr_keyword">throws</strong> Exception;
 <a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>      Future&lt;Void&gt; persistLowWatermark(<strong class="jxr_keyword">long</strong> lowWatermark);
-<a class="jxr_linenumber" name="39" href="#39">39</a>  }
+<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">void</strong> triggerCurrentBatchFlush() <strong class="jxr_keyword">throws</strong> Exception;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>      Future&lt;Void&gt; persistLowWatermark(<strong class="jxr_keyword">long</strong> lowWatermark);
+<a class="jxr_linenumber" name="41" href="#41">41</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>



[43/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestBasicTransaction.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestBasicTransaction.html b/xref-test/org/apache/omid/transaction/TestBasicTransaction.html
index dd9abd8..5702ac7 100644
--- a/xref-test/org/apache/omid/transaction/TestBasicTransaction.html
+++ b/xref-test/org/apache/omid/transaction/TestBasicTransaction.html
@@ -27,20 +27,20 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid.transaction;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.fail;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.fail;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Get;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Put;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Result;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ResultScanner;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.testng.ITestContext;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
 <a class="jxr_linenumber" name="34" href="#34">34</a>  
 <a class="jxr_linenumber" name="35" href="#35">35</a>  @Test(groups = <span class="jxr_string">"sharedHBase"</span>)
 <a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestBasicTransaction.html">TestBasicTransaction</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/omid/transaction/OmidTestBase.html">OmidTestBase</a> {
@@ -52,7 +52,7 @@
 <a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestampsOfTwoRowsInstertedAfterCommitOfSingleTransactionAreEquals(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="43" href="#43">43</a>  
 <a class="jxr_linenumber" name="44" href="#44">44</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="45" href="#45">45</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="45" href="#45">45</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="46" href="#46">46</a>  
 <a class="jxr_linenumber" name="47" href="#47">47</a>          byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
 <a class="jxr_linenumber" name="48" href="#48">48</a>          byte[] rowName2 = Bytes.toBytes(<span class="jxr_string">"row2"</span>);
@@ -64,10 +64,10 @@
 <a class="jxr_linenumber" name="54" href="#54">54</a>          Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="55" href="#55">55</a>  
 <a class="jxr_linenumber" name="56" href="#56">56</a>          Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
-<a class="jxr_linenumber" name="57" href="#57">57</a>          row1.add(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="57" href="#57">57</a>          row1.addColumn(famName1, colName1, dataValue1);
 <a class="jxr_linenumber" name="58" href="#58">58</a>          tt.put(tx1, row1);
 <a class="jxr_linenumber" name="59" href="#59">59</a>          Put row2 = <strong class="jxr_keyword">new</strong> Put(rowName2);
-<a class="jxr_linenumber" name="60" href="#60">60</a>          row2.add(famName1, colName1, dataValue2);
+<a class="jxr_linenumber" name="60" href="#60">60</a>          row2.addColumn(famName1, colName1, dataValue2);
 <a class="jxr_linenumber" name="61" href="#61">61</a>          tt.put(tx1, row2);
 <a class="jxr_linenumber" name="62" href="#62">62</a>  
 <a class="jxr_linenumber" name="63" href="#63">63</a>          tm.commit(tx1);
@@ -98,7 +98,7 @@
 <a class="jxr_linenumber" name="88" href="#88">88</a>              <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="89" href="#89">89</a>  
 <a class="jxr_linenumber" name="90" href="#90">90</a>          TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="91" href="#91">91</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="91" href="#91">91</a>          TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="92" href="#92">92</a>  
 <a class="jxr_linenumber" name="93" href="#93">93</a>          byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
 <a class="jxr_linenumber" name="94" href="#94">94</a>          byte[] rowName2 = Bytes.toBytes(<span class="jxr_string">"row2"</span>);
@@ -113,10 +113,10 @@
 <a class="jxr_linenumber" name="103" href="#103">103</a>         Transaction tx1 = tm.begin();
 <a class="jxr_linenumber" name="104" href="#104">104</a> 
 <a class="jxr_linenumber" name="105" href="#105">105</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
-<a class="jxr_linenumber" name="106" href="#106">106</a>         row1.add(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="106" href="#106">106</a>         row1.addColumn(famName1, colName1, dataValue1);
 <a class="jxr_linenumber" name="107" href="#107">107</a>         tt.put(tx1, row1);
 <a class="jxr_linenumber" name="108" href="#108">108</a>         Put row2 = <strong class="jxr_keyword">new</strong> Put(rowName2);
-<a class="jxr_linenumber" name="109" href="#109">109</a>         row2.add(famName1, colName1, dataValue2);
+<a class="jxr_linenumber" name="109" href="#109">109</a>         row2.addColumn(famName1, colName1, dataValue2);
 <a class="jxr_linenumber" name="110" href="#110">110</a>         tt.put(tx1, row2);
 <a class="jxr_linenumber" name="111" href="#111">111</a> 
 <a class="jxr_linenumber" name="112" href="#112">112</a>         tm.commit(tx1);
@@ -124,10 +124,10 @@
 <a class="jxr_linenumber" name="114" href="#114">114</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="115" href="#115">115</a> 
 <a class="jxr_linenumber" name="116" href="#116">116</a>         row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
-<a class="jxr_linenumber" name="117" href="#117">117</a>         row1.add(famName1, colName1, dataValue3);
+<a class="jxr_linenumber" name="117" href="#117">117</a>         row1.addColumn(famName1, colName1, dataValue3);
 <a class="jxr_linenumber" name="118" href="#118">118</a>         tt.put(tx2, row1);
 <a class="jxr_linenumber" name="119" href="#119">119</a>         row2 = <strong class="jxr_keyword">new</strong> Put(rowName2);
-<a class="jxr_linenumber" name="120" href="#120">120</a>         row2.add(famName1, colName1, dataValue4);
+<a class="jxr_linenumber" name="120" href="#120">120</a>         row2.addColumn(famName1, colName1, dataValue4);
 <a class="jxr_linenumber" name="121" href="#121">121</a>         tt.put(tx2, row2);
 <a class="jxr_linenumber" name="122" href="#122">122</a> 
 <a class="jxr_linenumber" name="123" href="#123">123</a>         tm.commit(tx2);
@@ -165,7 +165,7 @@
 <a class="jxr_linenumber" name="155" href="#155">155</a> 
 <a class="jxr_linenumber" name="156" href="#156">156</a>         TransactionManager tm = newTransactionManager(context);
 <a class="jxr_linenumber" name="157" href="#157">157</a> 
-<a class="jxr_linenumber" name="158" href="#158">158</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="158" href="#158">158</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="159" href="#159">159</a> 
 <a class="jxr_linenumber" name="160" href="#160">160</a>         Transaction t1 = tm.begin();
 <a class="jxr_linenumber" name="161" href="#161">161</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
@@ -177,14 +177,14 @@
 <a class="jxr_linenumber" name="167" href="#167">167</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
 <a class="jxr_linenumber" name="168" href="#168">168</a> 
 <a class="jxr_linenumber" name="169" href="#169">169</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="170" href="#170">170</a>         p.add(fam, col, data1);
+<a class="jxr_linenumber" name="170" href="#170">170</a>         p.addColumn(fam, col, data1);
 <a class="jxr_linenumber" name="171" href="#171">171</a>         tt.put(t1, p);
 <a class="jxr_linenumber" name="172" href="#172">172</a>         tm.commit(t1);
 <a class="jxr_linenumber" name="173" href="#173">173</a> 
 <a class="jxr_linenumber" name="174" href="#174">174</a>         Transaction tread = tm.begin();
 <a class="jxr_linenumber" name="175" href="#175">175</a>         Transaction t2 = tm.begin();
 <a class="jxr_linenumber" name="176" href="#176">176</a>         p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="177" href="#177">177</a>         p.add(fam, col, data2);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         p.addColumn(fam, col, data2);
 <a class="jxr_linenumber" name="178" href="#178">178</a>         tt.put(t2, p);
 <a class="jxr_linenumber" name="179" href="#179">179</a>         tm.commit(t2);
 <a class="jxr_linenumber" name="180" href="#180">180</a> 
@@ -202,7 +202,7 @@
 <a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestManyVersions(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="193" href="#193">193</a> 
 <a class="jxr_linenumber" name="194" href="#194">194</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="195" href="#195">195</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="195" href="#195">195</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="196" href="#196">196</a> 
 <a class="jxr_linenumber" name="197" href="#197">197</a>         Transaction t1 = tm.begin();
 <a class="jxr_linenumber" name="198" href="#198">198</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
@@ -214,14 +214,14 @@
 <a class="jxr_linenumber" name="204" href="#204">204</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
 <a class="jxr_linenumber" name="205" href="#205">205</a> 
 <a class="jxr_linenumber" name="206" href="#206">206</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="207" href="#207">207</a>         p.add(fam, col, data1);
+<a class="jxr_linenumber" name="207" href="#207">207</a>         p.addColumn(fam, col, data1);
 <a class="jxr_linenumber" name="208" href="#208">208</a>         tt.put(t1, p);
 <a class="jxr_linenumber" name="209" href="#209">209</a>         tm.commit(t1);
 <a class="jxr_linenumber" name="210" href="#210">210</a> 
 <a class="jxr_linenumber" name="211" href="#211">211</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 5; ++i) {
 <a class="jxr_linenumber" name="212" href="#212">212</a>             Transaction t2 = tm.begin();
 <a class="jxr_linenumber" name="213" href="#213">213</a>             p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="214" href="#214">214</a>             p.add(fam, col, data2);
+<a class="jxr_linenumber" name="214" href="#214">214</a>             p.addColumn(fam, col, data2);
 <a class="jxr_linenumber" name="215" href="#215">215</a>             tt.put(t2, p);
 <a class="jxr_linenumber" name="216" href="#216">216</a>         }
 <a class="jxr_linenumber" name="217" href="#217">217</a>         Transaction tread = tm.begin();
@@ -241,7 +241,7 @@
 <a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> runTestInterleave(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="232" href="#232">232</a> 
 <a class="jxr_linenumber" name="233" href="#233">233</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="234" href="#234">234</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="234" href="#234">234</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="235" href="#235">235</a> 
 <a class="jxr_linenumber" name="236" href="#236">236</a>         Transaction t1 = tm.begin();
 <a class="jxr_linenumber" name="237" href="#237">237</a>         LOG.info(<span class="jxr_string">"Transaction created "</span> + t1);
@@ -253,13 +253,13 @@
 <a class="jxr_linenumber" name="243" href="#243">243</a>         byte[] data2 = Bytes.toBytes(<span class="jxr_string">"testWrite-2"</span>);
 <a class="jxr_linenumber" name="244" href="#244">244</a> 
 <a class="jxr_linenumber" name="245" href="#245">245</a>         Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="246" href="#246">246</a>         p.add(fam, col, data1);
+<a class="jxr_linenumber" name="246" href="#246">246</a>         p.addColumn(fam, col, data1);
 <a class="jxr_linenumber" name="247" href="#247">247</a>         tt.put(t1, p);
 <a class="jxr_linenumber" name="248" href="#248">248</a>         tm.commit(t1);
 <a class="jxr_linenumber" name="249" href="#249">249</a> 
 <a class="jxr_linenumber" name="250" href="#250">250</a>         Transaction t2 = tm.begin();
 <a class="jxr_linenumber" name="251" href="#251">251</a>         p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="252" href="#252">252</a>         p.add(fam, col, data2);
+<a class="jxr_linenumber" name="252" href="#252">252</a>         p.addColumn(fam, col, data2);
 <a class="jxr_linenumber" name="253" href="#253">253</a>         tt.put(t2, p);
 <a class="jxr_linenumber" name="254" href="#254">254</a> 
 <a class="jxr_linenumber" name="255" href="#255">255</a>         Transaction tread = tm.begin();
@@ -288,7 +288,7 @@
 <a class="jxr_linenumber" name="278" href="#278">278</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testInterleavedScanReturnsTheRightSnapshotResults(ITestContext context) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="279" href="#279">279</a> 
 <a class="jxr_linenumber" name="280" href="#280">280</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="281" href="#281">281</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="281" href="#281">281</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="282" href="#282">282</a> 
 <a class="jxr_linenumber" name="283" href="#283">283</a>         <em class="jxr_comment">// Basic data-scaffolding for test</em>
 <a class="jxr_linenumber" name="284" href="#284">284</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
@@ -306,7 +306,7 @@
 <a class="jxr_linenumber" name="296" href="#296">296</a>             byte[] row = Bytes.toBytes(<span class="jxr_string">"row-to-scan"</span> + i);
 <a class="jxr_linenumber" name="297" href="#297">297</a> 
 <a class="jxr_linenumber" name="298" href="#298">298</a>             Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="299" href="#299">299</a>             p.add(fam, col, data1);
+<a class="jxr_linenumber" name="299" href="#299">299</a>             p.addColumn(fam, col, data1);
 <a class="jxr_linenumber" name="300" href="#300">300</a>             txTable.put(tx1, p);
 <a class="jxr_linenumber" name="301" href="#301">301</a>         }
 <a class="jxr_linenumber" name="302" href="#302">302</a>         tm.commit(tx1);
@@ -315,7 +315,7 @@
 <a class="jxr_linenumber" name="305" href="#305">305</a>         <em class="jxr_comment">// that scans the table, gets the proper snapshot with the stuff written by Tx1</em>
 <a class="jxr_linenumber" name="306" href="#306">306</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="307" href="#307">307</a>         Put p = <strong class="jxr_keyword">new</strong> Put(randomRow);
-<a class="jxr_linenumber" name="308" href="#308">308</a>         p.add(fam, col, data2);
+<a class="jxr_linenumber" name="308" href="#308">308</a>         p.addColumn(fam, col, data2);
 <a class="jxr_linenumber" name="309" href="#309">309</a>         txTable.put(tx2, p);
 <a class="jxr_linenumber" name="310" href="#310">310</a> 
 <a class="jxr_linenumber" name="311" href="#311">311</a>         Transaction scanTx = tm.begin(); <em class="jxr_comment">// This is the concurrent transactional scanner</em>
@@ -372,7 +372,7 @@
 <a class="jxr_linenumber" name="362" href="#362">362</a>             <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="363" href="#363">363</a> 
 <a class="jxr_linenumber" name="364" href="#364">364</a>         TransactionManager tm = newTransactionManager(context);
-<a class="jxr_linenumber" name="365" href="#365">365</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(hbaseConf, TEST_TABLE);
+<a class="jxr_linenumber" name="365" href="#365">365</a>         TTable txTable = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
 <a class="jxr_linenumber" name="366" href="#366">366</a> 
 <a class="jxr_linenumber" name="367" href="#367">367</a>         <em class="jxr_comment">// Basic data-scaffolding for test</em>
 <a class="jxr_linenumber" name="368" href="#368">368</a>         byte[] fam = Bytes.toBytes(TEST_FAMILY);
@@ -390,7 +390,7 @@
 <a class="jxr_linenumber" name="380" href="#380">380</a>             byte[] row = Bytes.toBytes(<span class="jxr_string">"row-to-scan"</span> + i);
 <a class="jxr_linenumber" name="381" href="#381">381</a> 
 <a class="jxr_linenumber" name="382" href="#382">382</a>             Put p = <strong class="jxr_keyword">new</strong> Put(row);
-<a class="jxr_linenumber" name="383" href="#383">383</a>             p.add(fam, col, data1);
+<a class="jxr_linenumber" name="383" href="#383">383</a>             p.addColumn(fam, col, data1);
 <a class="jxr_linenumber" name="384" href="#384">384</a>             txTable.put(tx1, p);
 <a class="jxr_linenumber" name="385" href="#385">385</a>         }
 <a class="jxr_linenumber" name="386" href="#386">386</a>         tm.commit(tx1);
@@ -399,7 +399,7 @@
 <a class="jxr_linenumber" name="389" href="#389">389</a>         <em class="jxr_comment">// right snapshot with the new value in the random row just written by Tx2</em>
 <a class="jxr_linenumber" name="390" href="#390">390</a>         Transaction tx2 = tm.begin();
 <a class="jxr_linenumber" name="391" href="#391">391</a>         Put p = <strong class="jxr_keyword">new</strong> Put(randomRow);
-<a class="jxr_linenumber" name="392" href="#392">392</a>         p.add(fam, col, data2);
+<a class="jxr_linenumber" name="392" href="#392">392</a>         p.addColumn(fam, col, data2);
 <a class="jxr_linenumber" name="393" href="#393">393</a>         txTable.put(tx2, p);
 <a class="jxr_linenumber" name="394" href="#394">394</a> 
 <a class="jxr_linenumber" name="395" href="#395">395</a>         <strong class="jxr_keyword">int</strong> modifiedRows = 0;
@@ -447,7 +447,44 @@
 <a class="jxr_linenumber" name="437" href="#437">437</a> 
 <a class="jxr_linenumber" name="438" href="#438">438</a>     }
 <a class="jxr_linenumber" name="439" href="#439">439</a> 
-<a class="jxr_linenumber" name="440" href="#440">440</a> }
+<a class="jxr_linenumber" name="440" href="#440">440</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="441" href="#441">441</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAutoCommit(ITestContext context)
+<a class="jxr_linenumber" name="442" href="#442">442</a>             <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="443" href="#443">443</a> 
+<a class="jxr_linenumber" name="444" href="#444">444</a>         TransactionManager tm = newTransactionManager(context);
+<a class="jxr_linenumber" name="445" href="#445">445</a>         TTable tt = <strong class="jxr_keyword">new</strong> TTable(connection, TEST_TABLE);
+<a class="jxr_linenumber" name="446" href="#446">446</a> 
+<a class="jxr_linenumber" name="447" href="#447">447</a>         byte[] rowName1 = Bytes.toBytes(<span class="jxr_string">"row1"</span>);
+<a class="jxr_linenumber" name="448" href="#448">448</a>         byte[] famName1 = Bytes.toBytes(TEST_FAMILY);
+<a class="jxr_linenumber" name="449" href="#449">449</a>         byte[] colName1 = Bytes.toBytes(<span class="jxr_string">"col1"</span>);
+<a class="jxr_linenumber" name="450" href="#450">450</a>         byte[] dataValue1 = Bytes.toBytes(<span class="jxr_string">"testWrite-1"</span>);
+<a class="jxr_linenumber" name="451" href="#451">451</a> 
+<a class="jxr_linenumber" name="452" href="#452">452</a>         Transaction tx1 = tm.begin();
+<a class="jxr_linenumber" name="453" href="#453">453</a> 
+<a class="jxr_linenumber" name="454" href="#454">454</a>         Put row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="455" href="#455">455</a>         row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="456" href="#456">456</a>         tt.put(tx1, row1);
+<a class="jxr_linenumber" name="457" href="#457">457</a> 
+<a class="jxr_linenumber" name="458" href="#458">458</a>         Transaction tx2 = tm.begin();
+<a class="jxr_linenumber" name="459" href="#459">459</a> 
+<a class="jxr_linenumber" name="460" href="#460">460</a>         Transaction tx3 = tm.begin();
+<a class="jxr_linenumber" name="461" href="#461">461</a> 
+<a class="jxr_linenumber" name="462" href="#462">462</a>         Get g = <strong class="jxr_keyword">new</strong> Get(rowName1).setMaxVersions();
+<a class="jxr_linenumber" name="463" href="#463">463</a>         g.addColumn(famName1, colName1);
+<a class="jxr_linenumber" name="464" href="#464">464</a>         Result r = tt.get(tx3, g);
+<a class="jxr_linenumber" name="465" href="#465">465</a>         assertEquals(r.size(), 0, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="466" href="#466">466</a> 
+<a class="jxr_linenumber" name="467" href="#467">467</a>         row1 = <strong class="jxr_keyword">new</strong> Put(rowName1);
+<a class="jxr_linenumber" name="468" href="#468">468</a>         row1.addColumn(famName1, colName1, dataValue1);
+<a class="jxr_linenumber" name="469" href="#469">469</a>         tt.put(tx2, row1, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="470" href="#470">470</a> 
+<a class="jxr_linenumber" name="471" href="#471">471</a>         r = tt.get(tx3, g);
+<a class="jxr_linenumber" name="472" href="#472">472</a>         assertEquals(r.size(), 1, <span class="jxr_string">"Unexpected size for read."</span>);
+<a class="jxr_linenumber" name="473" href="#473">473</a> 
+<a class="jxr_linenumber" name="474" href="#474">474</a>         tt.close();
+<a class="jxr_linenumber" name="475" href="#475">475</a>     }
+<a class="jxr_linenumber" name="476" href="#476">476</a> 
+<a class="jxr_linenumber" name="477" href="#477">477</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/transaction/TestCellUtils.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/transaction/TestCellUtils.html b/xref-test/org/apache/omid/transaction/TestCellUtils.html
index a0cb870..601fb5e 100644
--- a/xref-test/org/apache/omid/transaction/TestCellUtils.html
+++ b/xref-test/org/apache/omid/transaction/TestCellUtils.html
@@ -41,202 +41,203 @@
 <a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.List;
 <a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.SortedMap;
 <a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.SHADOW_CELL_SUFFIX;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  
-<a class="jxr_linenumber" name="40" href="#40">40</a>  @Test(groups = <span class="jxr_string">"noHBase"</span>)
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestCellUtils.html">TestCellUtils</a> {
-<a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"test-row"</span>);
-<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(<span class="jxr_string">"test-family"</span>);
-<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"test-qual"</span>);
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] otherQualifier = Bytes.toBytes(<span class="jxr_string">"other-test-qual"</span>);
-<a class="jxr_linenumber" name="47" href="#47">47</a>  
-<a class="jxr_linenumber" name="48" href="#48">48</a>      @DataProvider(name = <span class="jxr_string">"shadow-cell-suffixes"</span>)
-<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">public</strong> Object[][] createShadowCellSuffixes() {
-<a class="jxr_linenumber" name="50" href="#50">50</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> Object[][]{
-<a class="jxr_linenumber" name="51" href="#51">51</a>                  {SHADOW_CELL_SUFFIX},
-<a class="jxr_linenumber" name="52" href="#52">52</a>          };
-<a class="jxr_linenumber" name="53" href="#53">53</a>      }
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>      @Test(dataProvider = <span class="jxr_string">"shadow-cell-suffixes"</span>, timeOut = 10_000)
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellQualifiers(byte[] shadowCellSuffixToTest) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="57" href="#57">57</a>  
-<a class="jxr_linenumber" name="58" href="#58">58</a>          <strong class="jxr_keyword">final</strong> byte[] validShadowCellQualifier =
-<a class="jxr_linenumber" name="59" href="#59">59</a>                  com.google.common.primitives.Bytes.concat(qualifier, shadowCellSuffixToTest);
-<a class="jxr_linenumber" name="60" href="#60">60</a>          <strong class="jxr_keyword">final</strong> byte[] sandwichValidShadowCellQualifier =
-<a class="jxr_linenumber" name="61" href="#61">61</a>                  com.google.common.primitives.Bytes.concat(shadowCellSuffixToTest, validShadowCellQualifier);
-<a class="jxr_linenumber" name="62" href="#62">62</a>          <strong class="jxr_keyword">final</strong> byte[] doubleEndedValidShadowCellQualifier =
-<a class="jxr_linenumber" name="63" href="#63">63</a>                  com.google.common.primitives.Bytes.concat(validShadowCellQualifier, shadowCellSuffixToTest);
-<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">final</strong> byte[] interleavedValidShadowCellQualifier =
-<a class="jxr_linenumber" name="65" href="#65">65</a>                  com.google.common.primitives.Bytes.concat(validShadowCellQualifier, com.google.common.primitives.Bytes
-<a class="jxr_linenumber" name="66" href="#66">66</a>                          .concat(validShadowCellQualifier, validShadowCellQualifier));
-<a class="jxr_linenumber" name="67" href="#67">67</a>          <strong class="jxr_keyword">final</strong> byte[] value = Bytes.toBytes(<span class="jxr_string">"test-value"</span>);
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>          <em class="jxr_comment">// Test the qualifier passed is a shadow cell</em>
-<a class="jxr_linenumber" name="70" href="#70">70</a>          <em class="jxr_comment">// qualifier because it contains only one suffix</em>
-<a class="jxr_linenumber" name="71" href="#71">71</a>          <em class="jxr_comment">// and is placed at the end of the qualifier:</em>
-<a class="jxr_linenumber" name="72" href="#72">72</a>          <em class="jxr_comment">// qual_nameSUFFIX</em>
-<a class="jxr_linenumber" name="73" href="#73">73</a>          KeyValue kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, validShadowCellQualifier, value);
-<a class="jxr_linenumber" name="74" href="#74">74</a>          assertTrue(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should include a valid shadowCell identifier"</span>);
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>          <em class="jxr_comment">// We also accept this pattern in the qualifier:</em>
-<a class="jxr_linenumber" name="77" href="#77">77</a>          <em class="jxr_comment">// SUFFIXqual_nameSUFFIX</em>
-<a class="jxr_linenumber" name="78" href="#78">78</a>          kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, sandwichValidShadowCellQualifier, value);
-<a class="jxr_linenumber" name="79" href="#79">79</a>          assertTrue(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should include a valid shadowCell identifier"</span>);
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>          <em class="jxr_comment">// We also accept this pattern in the qualifier:</em>
-<a class="jxr_linenumber" name="82" href="#82">82</a>          <em class="jxr_comment">// qual_nameSUFFIXSUFFIX</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>          kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, doubleEndedValidShadowCellQualifier, value);
-<a class="jxr_linenumber" name="84" href="#84">84</a>          assertTrue(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should include a valid shadowCell identifier"</span>);
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>          <em class="jxr_comment">// We also accept this pattern in the qualifier:</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>          <em class="jxr_comment">// qual_nameSUFFIXqual_nameSUFFIXqual_nameSUFFIX</em>
-<a class="jxr_linenumber" name="88" href="#88">88</a>          kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, interleavedValidShadowCellQualifier, value);
-<a class="jxr_linenumber" name="89" href="#89">89</a>          assertTrue(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should include a valid shadowCell identifier"</span>);
-<a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>          <em class="jxr_comment">// Test the qualifier passed is not a shadow cell</em>
-<a class="jxr_linenumber" name="92" href="#92">92</a>          <em class="jxr_comment">// qualifier if there's nothing else apart from the suffix</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>          kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, shadowCellSuffixToTest, value);
-<a class="jxr_linenumber" name="94" href="#94">94</a>          assertFalse(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should not include a valid shadowCell identifier"</span>);
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>      }
-<a class="jxr_linenumber" name="97" href="#97">97</a>  
-<a class="jxr_linenumber" name="98" href="#98">98</a>      @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCorrectMapingOfCellsToShadowCells() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="100" href="#100">100</a>         <em class="jxr_comment">// Create the required data</em>
-<a class="jxr_linenumber" name="101" href="#101">101</a>         <strong class="jxr_keyword">final</strong> byte[] validShadowCellQualifier =
-<a class="jxr_linenumber" name="102" href="#102">102</a>                 com.google.common.primitives.Bytes.concat(qualifier, SHADOW_CELL_SUFFIX);
-<a class="jxr_linenumber" name="103" href="#103">103</a> 
-<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">final</strong> byte[] qualifier2 = Bytes.toBytes(<span class="jxr_string">"test-qual2"</span>);
-<a class="jxr_linenumber" name="105" href="#105">105</a>         <strong class="jxr_keyword">final</strong> byte[] validShadowCellQualifier2 =
-<a class="jxr_linenumber" name="106" href="#106">106</a>                 com.google.common.primitives.Bytes.concat(qualifier2, SHADOW_CELL_SUFFIX);
-<a class="jxr_linenumber" name="107" href="#107">107</a> 
-<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">final</strong> byte[] qualifier3 = Bytes.toBytes(<span class="jxr_string">"test-qual3"</span>);
-<a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>         Cell cell1 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>)); <em class="jxr_comment">// Default type is Put</em>
-<a class="jxr_linenumber" name="111" href="#111">111</a>         Cell dupCell1 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>)); <em class="jxr_comment">// Default type is Put</em>
-<a class="jxr_linenumber" name="112" href="#112">112</a>         Cell dupCell1WithAnotherValue = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"other-value"</span>));
-<a class="jxr_linenumber" name="113" href="#113">113</a>         Cell delCell1 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Type.Delete, Bytes.toBytes(<span class="jxr_string">"value"</span>));
-<a class="jxr_linenumber" name="114" href="#114">114</a>         Cell shadowCell1 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, validShadowCellQualifier, 1, Bytes.toBytes(<span class="jxr_string">"sc-value"</span>));
-<a class="jxr_linenumber" name="115" href="#115">115</a> 
-<a class="jxr_linenumber" name="116" href="#116">116</a>         Cell cell2 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier2, 1, Bytes.toBytes(<span class="jxr_string">"value2"</span>));
-<a class="jxr_linenumber" name="117" href="#117">117</a>         Cell shadowCell2 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, validShadowCellQualifier2, 1, Bytes.toBytes(<span class="jxr_string">"sc-value2"</span>));
-<a class="jxr_linenumber" name="118" href="#118">118</a> 
-<a class="jxr_linenumber" name="119" href="#119">119</a>         Cell cell3 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier3, 1, Bytes.toBytes(<span class="jxr_string">"value3"</span>));
-<a class="jxr_linenumber" name="120" href="#120">120</a> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>         <em class="jxr_comment">// Check a list of cells with duplicate values</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a>         List&lt;Cell&gt; badListWithDups = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="123" href="#123">123</a>         badListWithDups.add(cell1);
-<a class="jxr_linenumber" name="124" href="#124">124</a>         badListWithDups.add(dupCell1WithAnotherValue);
-<a class="jxr_linenumber" name="125" href="#125">125</a> 
-<a class="jxr_linenumber" name="126" href="#126">126</a>         <em class="jxr_comment">// Check dup shadow cell with same MVCC is ignored</em>
-<a class="jxr_linenumber" name="127" href="#127">127</a>         SortedMap&lt;Cell, Optional&lt;Cell&gt;&gt; cellsToShadowCells = CellUtils.mapCellsToShadowCells(badListWithDups);
-<a class="jxr_linenumber" name="128" href="#128">128</a>         assertEquals(cellsToShadowCells.size(), 1, <span class="jxr_string">"There should be only 1 key-value maps"</span>);
-<a class="jxr_linenumber" name="129" href="#129">129</a>         assertTrue(cellsToShadowCells.containsKey(cell1));
-<a class="jxr_linenumber" name="130" href="#130">130</a>         KeyValue firstKey = (KeyValue) cellsToShadowCells.firstKey();
-<a class="jxr_linenumber" name="131" href="#131">131</a>         KeyValue lastKey = (KeyValue) cellsToShadowCells.lastKey();
-<a class="jxr_linenumber" name="132" href="#132">132</a>         assertTrue(firstKey.equals(lastKey));
-<a class="jxr_linenumber" name="133" href="#133">133</a>         assertTrue(0 == Bytes.compareTo(firstKey.getValueArray(), firstKey.getValueOffset(), firstKey.getValueLength(),
-<a class="jxr_linenumber" name="134" href="#134">134</a>                                         cell1.getValueArray(), cell1.getValueOffset(), cell1.getValueLength()),
-<a class="jxr_linenumber" name="135" href="#135">135</a>                    <span class="jxr_string">"Should be equal"</span>);
-<a class="jxr_linenumber" name="136" href="#136">136</a> 
-<a class="jxr_linenumber" name="137" href="#137">137</a>         <em class="jxr_comment">// Modify dup shadow cell to have a greater MVCC and check that is replaced</em>
-<a class="jxr_linenumber" name="138" href="#138">138</a>         HBaseShims.setKeyValueSequenceId((KeyValue) dupCell1WithAnotherValue, 1);
-<a class="jxr_linenumber" name="139" href="#139">139</a>         cellsToShadowCells = CellUtils.mapCellsToShadowCells(badListWithDups);
-<a class="jxr_linenumber" name="140" href="#140">140</a>         assertEquals(cellsToShadowCells.size(), 1, <span class="jxr_string">"There should be only 1 key-value maps"</span>);
-<a class="jxr_linenumber" name="141" href="#141">141</a>         assertTrue(cellsToShadowCells.containsKey(dupCell1WithAnotherValue));
-<a class="jxr_linenumber" name="142" href="#142">142</a>         firstKey = (KeyValue) cellsToShadowCells.firstKey();
-<a class="jxr_linenumber" name="143" href="#143">143</a>         lastKey = (KeyValue) cellsToShadowCells.lastKey();
-<a class="jxr_linenumber" name="144" href="#144">144</a>         assertTrue(firstKey.equals(lastKey));
-<a class="jxr_linenumber" name="145" href="#145">145</a>         assertTrue(0 == Bytes.compareTo(firstKey.getValueArray(), firstKey.getValueOffset(),
-<a class="jxr_linenumber" name="146" href="#146">146</a>                                         firstKey.getValueLength(), dupCell1WithAnotherValue.getValueArray(),
-<a class="jxr_linenumber" name="147" href="#147">147</a>                                         dupCell1WithAnotherValue.getValueOffset(), dupCell1WithAnotherValue.getValueLength()),
-<a class="jxr_linenumber" name="148" href="#148">148</a>                    <span class="jxr_string">"Should be equal"</span>);
-<a class="jxr_linenumber" name="149" href="#149">149</a>         <em class="jxr_comment">// Check a list of cells with duplicate values</em>
-<a class="jxr_linenumber" name="150" href="#150">150</a>         List&lt;Cell&gt; cellListWithDups = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="151" href="#151">151</a>         cellListWithDups.add(cell1);
-<a class="jxr_linenumber" name="152" href="#152">152</a>         cellListWithDups.add(shadowCell1);
-<a class="jxr_linenumber" name="153" href="#153">153</a>         cellListWithDups.add(dupCell1); <em class="jxr_comment">// Dup cell</em>
-<a class="jxr_linenumber" name="154" href="#154">154</a>         cellListWithDups.add(delCell1); <em class="jxr_comment">// Another Dup cell but with different type</em>
-<a class="jxr_linenumber" name="155" href="#155">155</a>         cellListWithDups.add(cell2);
-<a class="jxr_linenumber" name="156" href="#156">156</a>         cellListWithDups.add(cell3);
-<a class="jxr_linenumber" name="157" href="#157">157</a>         cellListWithDups.add(shadowCell2);
-<a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>         cellsToShadowCells = CellUtils.mapCellsToShadowCells(cellListWithDups);
-<a class="jxr_linenumber" name="160" href="#160">160</a>         assertEquals(cellsToShadowCells.size(), 3, <span class="jxr_string">"There should be only 3 key-value maps"</span>);
-<a class="jxr_linenumber" name="161" href="#161">161</a>         assertTrue(cellsToShadowCells.get(cell1).get().equals(shadowCell1));
-<a class="jxr_linenumber" name="162" href="#162">162</a>         assertTrue(cellsToShadowCells.get(dupCell1).get().equals(shadowCell1));
-<a class="jxr_linenumber" name="163" href="#163">163</a>         assertFalse(cellsToShadowCells.containsKey(delCell1)); <em class="jxr_comment">// TODO This is strange and needs to be solved.</em>
-<a class="jxr_linenumber" name="164" href="#164">164</a>         <em class="jxr_comment">// The current algo avoids to put the delete cell</em>
-<a class="jxr_linenumber" name="165" href="#165">165</a>         <em class="jxr_comment">// as key after the put cell with same value was added</em>
-<a class="jxr_linenumber" name="166" href="#166">166</a>         assertTrue(cellsToShadowCells.get(cell2).get().equals(shadowCell2));
-<a class="jxr_linenumber" name="167" href="#167">167</a>         assertTrue(cellsToShadowCells.get(cell3).equals(Optional.absent()));
-<a class="jxr_linenumber" name="168" href="#168">168</a> 
-<a class="jxr_linenumber" name="169" href="#169">169</a>     }
-<a class="jxr_linenumber" name="170" href="#170">170</a> 
-<a class="jxr_linenumber" name="171" href="#171">171</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellSuffixConcatenationToQualifier() {
-<a class="jxr_linenumber" name="173" href="#173">173</a> 
-<a class="jxr_linenumber" name="174" href="#174">174</a>         Cell cell = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>));
-<a class="jxr_linenumber" name="175" href="#175">175</a>         byte[] suffixedQualifier = CellUtils.addShadowCellSuffix(cell.getQualifierArray(),
-<a class="jxr_linenumber" name="176" href="#176">176</a>                                                                  cell.getQualifierOffset(),
-<a class="jxr_linenumber" name="177" href="#177">177</a>                                                                  cell.getQualifierLength());
-<a class="jxr_linenumber" name="178" href="#178">178</a>         byte[] expectedQualifier = com.google.common.primitives.Bytes.concat(qualifier, SHADOW_CELL_SUFFIX);
-<a class="jxr_linenumber" name="179" href="#179">179</a>         assertEquals(suffixedQualifier, expectedQualifier);
-<a class="jxr_linenumber" name="180" href="#180">180</a> 
-<a class="jxr_linenumber" name="181" href="#181">181</a>     }
-<a class="jxr_linenumber" name="182" href="#182">182</a> 
-<a class="jxr_linenumber" name="183" href="#183">183</a>     @Test(dataProvider = <span class="jxr_string">"shadow-cell-suffixes"</span>, timeOut = 10_000)
-<a class="jxr_linenumber" name="184" href="#184">184</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellSuffixRemovalFromQualifier(byte[] shadowCellSuffixToTest) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="185" href="#185">185</a> 
-<a class="jxr_linenumber" name="186" href="#186">186</a>         <em class="jxr_comment">// Test removal from a correclty suffixed qualifier</em>
-<a class="jxr_linenumber" name="187" href="#187">187</a>         byte[] suffixedQualifier = com.google.common.primitives.Bytes.concat(qualifier, shadowCellSuffixToTest);
-<a class="jxr_linenumber" name="188" href="#188">188</a>         Cell cell = <strong class="jxr_keyword">new</strong> KeyValue(row, family, suffixedQualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>));
-<a class="jxr_linenumber" name="189" href="#189">189</a>         byte[] resultedQualifier = CellUtils.removeShadowCellSuffix(cell.getQualifierArray(),
-<a class="jxr_linenumber" name="190" href="#190">190</a>                                                                     cell.getQualifierOffset(),
-<a class="jxr_linenumber" name="191" href="#191">191</a>                                                                     cell.getQualifierLength());
-<a class="jxr_linenumber" name="192" href="#192">192</a>         byte[] expectedQualifier = qualifier;
-<a class="jxr_linenumber" name="193" href="#193">193</a>         assertEquals(resultedQualifier, expectedQualifier);
-<a class="jxr_linenumber" name="194" href="#194">194</a> 
-<a class="jxr_linenumber" name="195" href="#195">195</a>         <em class="jxr_comment">// Test removal from a badly suffixed qualifier</em>
-<a class="jxr_linenumber" name="196" href="#196">196</a>         byte[] badlySuffixedQualifier = com.google.common.primitives.Bytes.concat(qualifier, Bytes.toBytes(<span class="jxr_string">"BAD"</span>));
-<a class="jxr_linenumber" name="197" href="#197">197</a>         Cell badCell = <strong class="jxr_keyword">new</strong> KeyValue(row, family, badlySuffixedQualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>));
-<a class="jxr_linenumber" name="198" href="#198">198</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="199" href="#199">199</a>             CellUtils.removeShadowCellSuffix(badCell.getQualifierArray(),
-<a class="jxr_linenumber" name="200" href="#200">200</a>                                              badCell.getQualifierOffset(),
-<a class="jxr_linenumber" name="201" href="#201">201</a>                                              badCell.getQualifierLength());
-<a class="jxr_linenumber" name="202" href="#202">202</a>             fail();
-<a class="jxr_linenumber" name="203" href="#203">203</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="204" href="#204">204</a>             <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="205" href="#205">205</a>         }
-<a class="jxr_linenumber" name="206" href="#206">206</a>     }
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMatchingQualifiers() {
-<a class="jxr_linenumber" name="210" href="#210">210</a>         Cell cell = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>));
-<a class="jxr_linenumber" name="211" href="#211">211</a>         assertTrue(CellUtils.matchingQualifier(cell, qualifier, 0, qualifier.length));
-<a class="jxr_linenumber" name="212" href="#212">212</a>         assertFalse(CellUtils.matchingQualifier(cell, otherQualifier, 0, otherQualifier.length));
-<a class="jxr_linenumber" name="213" href="#213">213</a>     }
-<a class="jxr_linenumber" name="214" href="#214">214</a> 
-<a class="jxr_linenumber" name="215" href="#215">215</a>     @Test(dataProvider = <span class="jxr_string">"shadow-cell-suffixes"</span>, timeOut = 10_000)
-<a class="jxr_linenumber" name="216" href="#216">216</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testQualifierLengthFromShadowCellQualifier(byte[] shadowCellSuffixToTest) {
-<a class="jxr_linenumber" name="217" href="#217">217</a>         <em class="jxr_comment">// Test suffixed qualifier</em>
-<a class="jxr_linenumber" name="218" href="#218">218</a>         byte[] suffixedQualifier = com.google.common.primitives.Bytes.concat(qualifier, shadowCellSuffixToTest);
-<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">int</strong> originalQualifierLength =
-<a class="jxr_linenumber" name="220" href="#220">220</a>                 CellUtils.qualifierLengthFromShadowCellQualifier(suffixedQualifier, 0, suffixedQualifier.length);
-<a class="jxr_linenumber" name="221" href="#221">221</a>         assertEquals(originalQualifierLength, qualifier.length);
-<a class="jxr_linenumber" name="222" href="#222">222</a> 
-<a class="jxr_linenumber" name="223" href="#223">223</a>         <em class="jxr_comment">// Test passing qualifier without shadow cell suffix</em>
-<a class="jxr_linenumber" name="224" href="#224">224</a>         originalQualifierLength =
-<a class="jxr_linenumber" name="225" href="#225">225</a>                 CellUtils.qualifierLengthFromShadowCellQualifier(qualifier, 0, qualifier.length);
-<a class="jxr_linenumber" name="226" href="#226">226</a>         assertEquals(originalQualifierLength, qualifier.length);
-<a class="jxr_linenumber" name="227" href="#227">227</a>     }
-<a class="jxr_linenumber" name="228" href="#228">228</a> 
-<a class="jxr_linenumber" name="229" href="#229">229</a> }
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.SHADOW_CELL_PREFIX;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.omid.transaction.CellUtils.SHADOW_CELL_SUFFIX;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertEquals;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertFalse;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.fail;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>  @Test(groups = <span class="jxr_string">"noHBase"</span>)
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/transaction/TestCellUtils.html">TestCellUtils</a> {
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(<span class="jxr_string">"test-row"</span>);
+<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] family = Bytes.toBytes(<span class="jxr_string">"test-family"</span>);
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] qualifier = Bytes.toBytes(<span class="jxr_string">"test-qual"</span>);
+<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> byte[] otherQualifier = Bytes.toBytes(<span class="jxr_string">"other-test-qual"</span>);
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>      @DataProvider(name = <span class="jxr_string">"shadow-cell-suffixes"</span>)
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">public</strong> Object[][] createShadowCellSuffixes() {
+<a class="jxr_linenumber" name="51" href="#51">51</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> Object[][]{
+<a class="jxr_linenumber" name="52" href="#52">52</a>                  {SHADOW_CELL_SUFFIX},
+<a class="jxr_linenumber" name="53" href="#53">53</a>          };
+<a class="jxr_linenumber" name="54" href="#54">54</a>      }
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>      @Test(dataProvider = <span class="jxr_string">"shadow-cell-suffixes"</span>, timeOut = 10_000)
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellQualifiers(byte[] shadowCellSuffixToTest) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="58" href="#58">58</a>  
+<a class="jxr_linenumber" name="59" href="#59">59</a>          <strong class="jxr_keyword">final</strong> byte[] validShadowCellQualifier =
+<a class="jxr_linenumber" name="60" href="#60">60</a>                  com.google.common.primitives.Bytes.concat(qualifier, shadowCellSuffixToTest);
+<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">final</strong> byte[] sandwichValidShadowCellQualifier =
+<a class="jxr_linenumber" name="62" href="#62">62</a>                  com.google.common.primitives.Bytes.concat(shadowCellSuffixToTest, validShadowCellQualifier);
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">final</strong> byte[] doubleEndedValidShadowCellQualifier =
+<a class="jxr_linenumber" name="64" href="#64">64</a>                  com.google.common.primitives.Bytes.concat(validShadowCellQualifier, shadowCellSuffixToTest);
+<a class="jxr_linenumber" name="65" href="#65">65</a>          <strong class="jxr_keyword">final</strong> byte[] interleavedValidShadowCellQualifier =
+<a class="jxr_linenumber" name="66" href="#66">66</a>                  com.google.common.primitives.Bytes.concat(validShadowCellQualifier, com.google.common.primitives.Bytes
+<a class="jxr_linenumber" name="67" href="#67">67</a>                          .concat(validShadowCellQualifier, validShadowCellQualifier));
+<a class="jxr_linenumber" name="68" href="#68">68</a>          <strong class="jxr_keyword">final</strong> byte[] value = Bytes.toBytes(<span class="jxr_string">"test-value"</span>);
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>          <em class="jxr_comment">// Test the qualifier passed is a shadow cell</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <em class="jxr_comment">// qualifier because it contains only one suffix</em>
+<a class="jxr_linenumber" name="72" href="#72">72</a>          <em class="jxr_comment">// and is placed at the end of the qualifier:</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>          <em class="jxr_comment">// qual_nameSUFFIX</em>
+<a class="jxr_linenumber" name="74" href="#74">74</a>          KeyValue kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, validShadowCellQualifier, value);
+<a class="jxr_linenumber" name="75" href="#75">75</a>          assertTrue(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should include a valid shadowCell identifier"</span>);
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>          <em class="jxr_comment">// We also accept this pattern in the qualifier:</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>          <em class="jxr_comment">// SUFFIXqual_nameSUFFIX</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>          kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, sandwichValidShadowCellQualifier, value);
+<a class="jxr_linenumber" name="80" href="#80">80</a>          assertTrue(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should include a valid shadowCell identifier"</span>);
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>          <em class="jxr_comment">// We also accept this pattern in the qualifier:</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <em class="jxr_comment">// qual_nameSUFFIXSUFFIX</em>
+<a class="jxr_linenumber" name="84" href="#84">84</a>          kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, doubleEndedValidShadowCellQualifier, value);
+<a class="jxr_linenumber" name="85" href="#85">85</a>          assertTrue(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should include a valid shadowCell identifier"</span>);
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>          <em class="jxr_comment">// We also accept this pattern in the qualifier:</em>
+<a class="jxr_linenumber" name="88" href="#88">88</a>          <em class="jxr_comment">// qual_nameSUFFIXqual_nameSUFFIXqual_nameSUFFIX</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>          kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, interleavedValidShadowCellQualifier, value);
+<a class="jxr_linenumber" name="90" href="#90">90</a>          assertTrue(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should include a valid shadowCell identifier"</span>);
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>          <em class="jxr_comment">// Test the qualifier passed is not a shadow cell</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>          <em class="jxr_comment">// qualifier if there's nothing else apart from the suffix</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>          kv = <strong class="jxr_keyword">new</strong> KeyValue(row, family, shadowCellSuffixToTest, value);
+<a class="jxr_linenumber" name="95" href="#95">95</a>          assertFalse(CellUtils.isShadowCell(kv), <span class="jxr_string">"Should not include a valid shadowCell identifier"</span>);
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>      }
+<a class="jxr_linenumber" name="98" href="#98">98</a>  
+<a class="jxr_linenumber" name="99" href="#99">99</a>      @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCorrectMapingOfCellsToShadowCells() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="101" href="#101">101</a>         <em class="jxr_comment">// Create the required data</em>
+<a class="jxr_linenumber" name="102" href="#102">102</a>         <strong class="jxr_keyword">final</strong> byte[] validShadowCellQualifier =
+<a class="jxr_linenumber" name="103" href="#103">103</a>                 com.google.common.primitives.Bytes.concat(SHADOW_CELL_PREFIX, qualifier, SHADOW_CELL_SUFFIX);
+<a class="jxr_linenumber" name="104" href="#104">104</a> 
+<a class="jxr_linenumber" name="105" href="#105">105</a>         <strong class="jxr_keyword">final</strong> byte[] qualifier2 = Bytes.toBytes(<span class="jxr_string">"test-qual2"</span>);
+<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">final</strong> byte[] validShadowCellQualifier2 =
+<a class="jxr_linenumber" name="107" href="#107">107</a>                 com.google.common.primitives.Bytes.concat(SHADOW_CELL_PREFIX, qualifier2, SHADOW_CELL_SUFFIX);
+<a class="jxr_linenumber" name="108" href="#108">108</a> 
+<a class="jxr_linenumber" name="109" href="#109">109</a>         <strong class="jxr_keyword">final</strong> byte[] qualifier3 = Bytes.toBytes(<span class="jxr_string">"test-qual3"</span>);
+<a class="jxr_linenumber" name="110" href="#110">110</a> 
+<a class="jxr_linenumber" name="111" href="#111">111</a>         Cell cell1 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>)); <em class="jxr_comment">// Default type is Put</em>
+<a class="jxr_linenumber" name="112" href="#112">112</a>         Cell dupCell1 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>)); <em class="jxr_comment">// Default type is Put</em>
+<a class="jxr_linenumber" name="113" href="#113">113</a>         Cell dupCell1WithAnotherValue = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"other-value"</span>));
+<a class="jxr_linenumber" name="114" href="#114">114</a>         Cell delCell1 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Type.Delete, Bytes.toBytes(<span class="jxr_string">"value"</span>));
+<a class="jxr_linenumber" name="115" href="#115">115</a>         Cell shadowCell1 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, validShadowCellQualifier, 1, Bytes.toBytes(<span class="jxr_string">"sc-value"</span>));
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a>         Cell cell2 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier2, 1, Bytes.toBytes(<span class="jxr_string">"value2"</span>));
+<a class="jxr_linenumber" name="118" href="#118">118</a>         Cell shadowCell2 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, validShadowCellQualifier2, 1, Bytes.toBytes(<span class="jxr_string">"sc-value2"</span>));
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>         Cell cell3 = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier3, 1, Bytes.toBytes(<span class="jxr_string">"value3"</span>));
+<a class="jxr_linenumber" name="121" href="#121">121</a> 
+<a class="jxr_linenumber" name="122" href="#122">122</a>         <em class="jxr_comment">// Check a list of cells with duplicate values</em>
+<a class="jxr_linenumber" name="123" href="#123">123</a>         List&lt;Cell&gt; badListWithDups = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="124" href="#124">124</a>         badListWithDups.add(cell1);
+<a class="jxr_linenumber" name="125" href="#125">125</a>         badListWithDups.add(dupCell1WithAnotherValue);
+<a class="jxr_linenumber" name="126" href="#126">126</a> 
+<a class="jxr_linenumber" name="127" href="#127">127</a>         <em class="jxr_comment">// Check dup shadow cell with same MVCC is ignored</em>
+<a class="jxr_linenumber" name="128" href="#128">128</a>         SortedMap&lt;Cell, Optional&lt;Cell&gt;&gt; cellsToShadowCells = CellUtils.mapCellsToShadowCells(badListWithDups);
+<a class="jxr_linenumber" name="129" href="#129">129</a>         assertEquals(cellsToShadowCells.size(), 1, <span class="jxr_string">"There should be only 1 key-value maps"</span>);
+<a class="jxr_linenumber" name="130" href="#130">130</a>         assertTrue(cellsToShadowCells.containsKey(cell1));
+<a class="jxr_linenumber" name="131" href="#131">131</a>         KeyValue firstKey = (KeyValue) cellsToShadowCells.firstKey();
+<a class="jxr_linenumber" name="132" href="#132">132</a>         KeyValue lastKey = (KeyValue) cellsToShadowCells.lastKey();
+<a class="jxr_linenumber" name="133" href="#133">133</a>         assertTrue(firstKey.equals(lastKey));
+<a class="jxr_linenumber" name="134" href="#134">134</a>         assertTrue(0 == Bytes.compareTo(firstKey.getValueArray(), firstKey.getValueOffset(), firstKey.getValueLength(),
+<a class="jxr_linenumber" name="135" href="#135">135</a>                                         cell1.getValueArray(), cell1.getValueOffset(), cell1.getValueLength()),
+<a class="jxr_linenumber" name="136" href="#136">136</a>                    <span class="jxr_string">"Should be equal"</span>);
+<a class="jxr_linenumber" name="137" href="#137">137</a> 
+<a class="jxr_linenumber" name="138" href="#138">138</a>         <em class="jxr_comment">// Modify dup shadow cell to have a greater MVCC and check that is replaced</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a>         HBaseShims.setKeyValueSequenceId((KeyValue) dupCell1WithAnotherValue, 1);
+<a class="jxr_linenumber" name="140" href="#140">140</a>         cellsToShadowCells = CellUtils.mapCellsToShadowCells(badListWithDups);
+<a class="jxr_linenumber" name="141" href="#141">141</a>         assertEquals(cellsToShadowCells.size(), 1, <span class="jxr_string">"There should be only 1 key-value maps"</span>);
+<a class="jxr_linenumber" name="142" href="#142">142</a>         assertTrue(cellsToShadowCells.containsKey(dupCell1WithAnotherValue));
+<a class="jxr_linenumber" name="143" href="#143">143</a>         firstKey = (KeyValue) cellsToShadowCells.firstKey();
+<a class="jxr_linenumber" name="144" href="#144">144</a>         lastKey = (KeyValue) cellsToShadowCells.lastKey();
+<a class="jxr_linenumber" name="145" href="#145">145</a>         assertTrue(firstKey.equals(lastKey));
+<a class="jxr_linenumber" name="146" href="#146">146</a>         assertTrue(0 == Bytes.compareTo(firstKey.getValueArray(), firstKey.getValueOffset(),
+<a class="jxr_linenumber" name="147" href="#147">147</a>                                         firstKey.getValueLength(), dupCell1WithAnotherValue.getValueArray(),
+<a class="jxr_linenumber" name="148" href="#148">148</a>                                         dupCell1WithAnotherValue.getValueOffset(), dupCell1WithAnotherValue.getValueLength()),
+<a class="jxr_linenumber" name="149" href="#149">149</a>                    <span class="jxr_string">"Should be equal"</span>);
+<a class="jxr_linenumber" name="150" href="#150">150</a>         <em class="jxr_comment">// Check a list of cells with duplicate values</em>
+<a class="jxr_linenumber" name="151" href="#151">151</a>         List&lt;Cell&gt; cellListWithDups = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="152" href="#152">152</a>         cellListWithDups.add(cell1);
+<a class="jxr_linenumber" name="153" href="#153">153</a>         cellListWithDups.add(shadowCell1);
+<a class="jxr_linenumber" name="154" href="#154">154</a>         cellListWithDups.add(dupCell1); <em class="jxr_comment">// Dup cell</em>
+<a class="jxr_linenumber" name="155" href="#155">155</a>         cellListWithDups.add(delCell1); <em class="jxr_comment">// Another Dup cell but with different type</em>
+<a class="jxr_linenumber" name="156" href="#156">156</a>         cellListWithDups.add(cell2);
+<a class="jxr_linenumber" name="157" href="#157">157</a>         cellListWithDups.add(cell3);
+<a class="jxr_linenumber" name="158" href="#158">158</a>         cellListWithDups.add(shadowCell2);
+<a class="jxr_linenumber" name="159" href="#159">159</a> 
+<a class="jxr_linenumber" name="160" href="#160">160</a>         cellsToShadowCells = CellUtils.mapCellsToShadowCells(cellListWithDups);
+<a class="jxr_linenumber" name="161" href="#161">161</a>         assertEquals(cellsToShadowCells.size(), 3, <span class="jxr_string">"There should be only 3 key-value maps"</span>);
+<a class="jxr_linenumber" name="162" href="#162">162</a>         assertTrue(cellsToShadowCells.get(cell1).get().equals(shadowCell1));
+<a class="jxr_linenumber" name="163" href="#163">163</a>         assertTrue(cellsToShadowCells.get(dupCell1).get().equals(shadowCell1));
+<a class="jxr_linenumber" name="164" href="#164">164</a>         assertFalse(cellsToShadowCells.containsKey(delCell1)); <em class="jxr_comment">// TODO This is strange and needs to be solved.</em>
+<a class="jxr_linenumber" name="165" href="#165">165</a>         <em class="jxr_comment">// The current algo avoids to put the delete cell</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a>         <em class="jxr_comment">// as key after the put cell with same value was added</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a>         assertTrue(cellsToShadowCells.get(cell2).get().equals(shadowCell2));
+<a class="jxr_linenumber" name="168" href="#168">168</a>         assertTrue(cellsToShadowCells.get(cell3).equals(Optional.absent()));
+<a class="jxr_linenumber" name="169" href="#169">169</a> 
+<a class="jxr_linenumber" name="170" href="#170">170</a>     }
+<a class="jxr_linenumber" name="171" href="#171">171</a> 
+<a class="jxr_linenumber" name="172" href="#172">172</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellSuffixConcatenationToQualifier() {
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>         Cell cell = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>));
+<a class="jxr_linenumber" name="176" href="#176">176</a>         byte[] suffixedQualifier = CellUtils.addShadowCellSuffixPrefix(cell.getQualifierArray(),
+<a class="jxr_linenumber" name="177" href="#177">177</a>                                                                  cell.getQualifierOffset(),
+<a class="jxr_linenumber" name="178" href="#178">178</a>                                                                  cell.getQualifierLength());
+<a class="jxr_linenumber" name="179" href="#179">179</a>         byte[] expectedQualifier = com.google.common.primitives.Bytes.concat(SHADOW_CELL_PREFIX, qualifier, SHADOW_CELL_SUFFIX);
+<a class="jxr_linenumber" name="180" href="#180">180</a>         assertEquals(suffixedQualifier, expectedQualifier);
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>     }
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>     @Test(dataProvider = <span class="jxr_string">"shadow-cell-suffixes"</span>, timeOut = 10_000)
+<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShadowCellSuffixRemovalFromQualifier(byte[] shadowCellSuffixToTest) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="186" href="#186">186</a> 
+<a class="jxr_linenumber" name="187" href="#187">187</a>         <em class="jxr_comment">// Test removal from a correclty suffixed qualifier</em>
+<a class="jxr_linenumber" name="188" href="#188">188</a>         byte[] suffixedQualifier = com.google.common.primitives.Bytes.concat(SHADOW_CELL_PREFIX, qualifier, shadowCellSuffixToTest);
+<a class="jxr_linenumber" name="189" href="#189">189</a>         Cell cell = <strong class="jxr_keyword">new</strong> KeyValue(row, family, suffixedQualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>));
+<a class="jxr_linenumber" name="190" href="#190">190</a>         byte[] resultedQualifier = CellUtils.removeShadowCellSuffixPrefix(cell.getQualifierArray(),
+<a class="jxr_linenumber" name="191" href="#191">191</a>                                                                     cell.getQualifierOffset(),
+<a class="jxr_linenumber" name="192" href="#192">192</a>                                                                     cell.getQualifierLength());
+<a class="jxr_linenumber" name="193" href="#193">193</a>         byte[] expectedQualifier = qualifier;
+<a class="jxr_linenumber" name="194" href="#194">194</a>         assertEquals(resultedQualifier, expectedQualifier);
+<a class="jxr_linenumber" name="195" href="#195">195</a> 
+<a class="jxr_linenumber" name="196" href="#196">196</a>         <em class="jxr_comment">// Test removal from a badly suffixed qualifier</em>
+<a class="jxr_linenumber" name="197" href="#197">197</a>         byte[] badlySuffixedQualifier = com.google.common.primitives.Bytes.concat(SHADOW_CELL_PREFIX, qualifier, Bytes.toBytes(<span class="jxr_string">"BAD"</span>));
+<a class="jxr_linenumber" name="198" href="#198">198</a>         Cell badCell = <strong class="jxr_keyword">new</strong> KeyValue(row, family, badlySuffixedQualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>));
+<a class="jxr_linenumber" name="199" href="#199">199</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="200" href="#200">200</a>             CellUtils.removeShadowCellSuffixPrefix(badCell.getQualifierArray(),
+<a class="jxr_linenumber" name="201" href="#201">201</a>                                              badCell.getQualifierOffset(),
+<a class="jxr_linenumber" name="202" href="#202">202</a>                                              badCell.getQualifierLength());
+<a class="jxr_linenumber" name="203" href="#203">203</a>             fail();
+<a class="jxr_linenumber" name="204" href="#204">204</a>         } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="205" href="#205">205</a>             <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="206" href="#206">206</a>         }
+<a class="jxr_linenumber" name="207" href="#207">207</a>     }
+<a class="jxr_linenumber" name="208" href="#208">208</a> 
+<a class="jxr_linenumber" name="209" href="#209">209</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="210" href="#210">210</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMatchingQualifiers() {
+<a class="jxr_linenumber" name="211" href="#211">211</a>         Cell cell = <strong class="jxr_keyword">new</strong> KeyValue(row, family, qualifier, 1, Bytes.toBytes(<span class="jxr_string">"value"</span>));
+<a class="jxr_linenumber" name="212" href="#212">212</a>         assertTrue(CellUtils.matchingQualifier(cell, qualifier, 0, qualifier.length));
+<a class="jxr_linenumber" name="213" href="#213">213</a>         assertFalse(CellUtils.matchingQualifier(cell, otherQualifier, 0, otherQualifier.length));
+<a class="jxr_linenumber" name="214" href="#214">214</a>     }
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>     @Test(dataProvider = <span class="jxr_string">"shadow-cell-suffixes"</span>, timeOut = 10_000)
+<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testQualifierLengthFromShadowCellQualifier(byte[] shadowCellSuffixToTest) {
+<a class="jxr_linenumber" name="218" href="#218">218</a>         <em class="jxr_comment">// Test suffixed qualifier</em>
+<a class="jxr_linenumber" name="219" href="#219">219</a>         byte[] suffixedQualifier = com.google.common.primitives.Bytes.concat(SHADOW_CELL_PREFIX, qualifier, shadowCellSuffixToTest);
+<a class="jxr_linenumber" name="220" href="#220">220</a>         <strong class="jxr_keyword">int</strong> originalQualifierLength =
+<a class="jxr_linenumber" name="221" href="#221">221</a>                 CellUtils.qualifierLengthFromShadowCellQualifier(suffixedQualifier, 0, suffixedQualifier.length);
+<a class="jxr_linenumber" name="222" href="#222">222</a>         assertEquals(originalQualifierLength, qualifier.length);
+<a class="jxr_linenumber" name="223" href="#223">223</a> 
+<a class="jxr_linenumber" name="224" href="#224">224</a>         <em class="jxr_comment">// Test passing qualifier without shadow cell suffix</em>
+<a class="jxr_linenumber" name="225" href="#225">225</a>         originalQualifierLength =
+<a class="jxr_linenumber" name="226" href="#226">226</a>                 CellUtils.qualifierLengthFromShadowCellQualifier(qualifier, 0, qualifier.length);
+<a class="jxr_linenumber" name="227" href="#227">227</a>         assertEquals(originalQualifierLength, qualifier.length);
+<a class="jxr_linenumber" name="228" href="#228">228</a>     }
+<a class="jxr_linenumber" name="229" href="#229">229</a> 
+<a class="jxr_linenumber" name="230" href="#230">230</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[20/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/HBaseShims.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/HBaseShims.html b/xref/org/apache/omid/HBaseShims.html
index c32749a..f057729 100644
--- a/xref/org/apache/omid/HBaseShims.html
+++ b/xref/org/apache/omid/HBaseShims.html
@@ -27,52 +27,79 @@
 <a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid;
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
-<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
-<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.HRegion;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.HRegionServer;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.ScannerContext;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/omid/HBaseShims.html">HBaseShims</a> {
-<a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setKeyValueSequenceId(KeyValue kv, <strong class="jxr_keyword">int</strong> sequenceId) {
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>          kv.setMvccVersion(sequenceId);
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>      }
+<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.CellComparator;
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HColumnDescriptor;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HTableDescriptor;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValue;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableName;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Admin;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Connection;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.TableDescriptor;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.ObserverContext;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.Filter;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.HRegion;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.HRegionServer;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.Region;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.regionserver.Store;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
 <a class="jxr_linenumber" name="38" href="#38">38</a>  
-<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/omid/RegionWrapper.html">RegionWrapper</a> getRegionCoprocessorRegion(RegionCoprocessorEnvironment env) {
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
 <a class="jxr_linenumber" name="40" href="#40">40</a>  
-<a class="jxr_linenumber" name="41" href="#41">41</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/omid/RegionWrapper.html">RegionWrapper</a>(env.getRegion());
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/omid/HBaseShims.html">HBaseShims</a> {
 <a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>      }
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setKeyValueSequenceId(KeyValue kv, <strong class="jxr_keyword">int</strong> sequenceId) {
 <a class="jxr_linenumber" name="44" href="#44">44</a>  
-<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> flushAllOnlineRegions(HRegionServer regionServer, TableName tableName) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="45" href="#45">45</a>          kv.setSequenceId(sequenceId);
 <a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>          <strong class="jxr_keyword">for</strong> (HRegion r : regionServer.getOnlineRegions(tableName)) {
-<a class="jxr_linenumber" name="48" href="#48">48</a>              r.flushcache();
-<a class="jxr_linenumber" name="49" href="#49">49</a>          }
+<a class="jxr_linenumber" name="47" href="#47">47</a>      }
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> Region getRegionCoprocessorRegion(RegionCoprocessorEnvironment env) {
 <a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>      }
+<a class="jxr_linenumber" name="51" href="#51">51</a>          <strong class="jxr_keyword">return</strong> env.getRegion();
 <a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addFamilyToHTableDescriptor(HTableDescriptor tableDesc, HColumnDescriptor columnDesc) {
+<a class="jxr_linenumber" name="53" href="#53">53</a>      }
 <a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>          tableDesc.addFamily(columnDesc);
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>      }
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> getBatchLimit(<a href="../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html">ScannerContext</a> scannerContext) {
-<a class="jxr_linenumber" name="60" href="#60">60</a>  
-<a class="jxr_linenumber" name="61" href="#61">61</a>          <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException(<span class="jxr_string">"Should not be called for 0.9x versions"</span>);
-<a class="jxr_linenumber" name="62" href="#62">62</a>  
-<a class="jxr_linenumber" name="63" href="#63">63</a>      }
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>  }
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> flushAllOnlineRegions(HRegionServer regionServer, TableName tableName)
+<a class="jxr_linenumber" name="56" href="#56">56</a>              <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="57" href="#57">57</a>  
+<a class="jxr_linenumber" name="58" href="#58">58</a>          <strong class="jxr_keyword">for</strong> (HRegion r : regionServer.getRegions(tableName)) {
+<a class="jxr_linenumber" name="59" href="#59">59</a>              r.flush(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="60" href="#60">60</a>          }
+<a class="jxr_linenumber" name="61" href="#61">61</a>  
+<a class="jxr_linenumber" name="62" href="#62">62</a>      }
+<a class="jxr_linenumber" name="63" href="#63">63</a>  
+<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addFamilyToHTableDescriptor(HTableDescriptor tableDesc, HColumnDescriptor columnDesc) {
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>          tableDesc.addFamily(columnDesc);
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>      }
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> CellComparator cellComparatorInstance() {
+<a class="jxr_linenumber" name="71" href="#71">71</a>          <strong class="jxr_keyword">return</strong> CellComparator.getInstance();
+<a class="jxr_linenumber" name="72" href="#72">72</a>      }
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> OmidCompactionEnabled(ObserverContext&lt;RegionCoprocessorEnvironment&gt; env,
+<a class="jxr_linenumber" name="75" href="#75">75</a>                                    Store store,
+<a class="jxr_linenumber" name="76" href="#76">76</a>                                    String cfFlagValue) {
+<a class="jxr_linenumber" name="77" href="#77">77</a>          TableDescriptor desc = env.getEnvironment().getRegion().getTableDescriptor();
+<a class="jxr_linenumber" name="78" href="#78">78</a>          ColumnFamilyDescriptor famDesc = desc.getColumnFamily(Bytes.toBytes(store.getColumnFamilyName()));
+<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">return</strong> Boolean.valueOf(Bytes.toString(famDesc.getValue(Bytes.toBytes(cfFlagValue))));
+<a class="jxr_linenumber" name="80" href="#80">80</a>      }
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> setCompaction(Connection conn, TableName table, byte[] columnFamily, String key, String value)
+<a class="jxr_linenumber" name="83" href="#83">83</a>              <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="84" href="#84">84</a>          <strong class="jxr_keyword">try</strong>(Admin admin = conn.getAdmin()) {
+<a class="jxr_linenumber" name="85" href="#85">85</a>              TableDescriptor desc = admin.getDescriptor(table);
+<a class="jxr_linenumber" name="86" href="#86">86</a>              ColumnFamilyDescriptor cfDesc = desc.getColumnFamily(columnFamily);
+<a class="jxr_linenumber" name="87" href="#87">87</a>              ColumnFamilyDescriptorBuilder cfBuilder = ColumnFamilyDescriptorBuilder.newBuilder(cfDesc);
+<a class="jxr_linenumber" name="88" href="#88">88</a>              cfBuilder.setValue(Bytes.toBytes(key),Bytes.toBytes(value));
+<a class="jxr_linenumber" name="89" href="#89">89</a>              admin.modifyColumnFamily(table, cfBuilder.build());
+<a class="jxr_linenumber" name="90" href="#90">90</a>          }
+<a class="jxr_linenumber" name="91" href="#91">91</a>      }
+<a class="jxr_linenumber" name="92" href="#92">92</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/NetworkUtils.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/NetworkUtils.html b/xref/org/apache/omid/NetworkUtils.html
index c2c190c..973b86a 100644
--- a/xref/org/apache/omid/NetworkUtils.html
+++ b/xref/org/apache/omid/NetworkUtils.html
@@ -32,39 +32,35 @@
 <a class="jxr_linenumber" name="22" href="#22">22</a>  
 <a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.net.NetworkInterface;
 <a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.net.SocketException;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.Enumeration;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/omid/NetworkUtils.html">NetworkUtils</a> {
-<a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(NetworkUtils.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LINUX_TSO_NET_IFACE_PREFIX = <span class="jxr_string">"eth"</span>;
-<a class="jxr_linenumber" name="33" href="#33">33</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MAC_TSO_NET_IFACE_PREFIX = <span class="jxr_string">"en"</span>;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  
-<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String getDefaultNetworkInterface() {
-<a class="jxr_linenumber" name="36" href="#36">36</a>  
-<a class="jxr_linenumber" name="37" href="#37">37</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="38" href="#38">38</a>              Enumeration&lt;NetworkInterface&gt; networkInterfaces = NetworkInterface.getNetworkInterfaces();
-<a class="jxr_linenumber" name="39" href="#39">39</a>              <strong class="jxr_keyword">while</strong> (networkInterfaces.hasMoreElements()) {
-<a class="jxr_linenumber" name="40" href="#40">40</a>                  NetworkInterface nextElement = networkInterfaces.nextElement();
-<a class="jxr_linenumber" name="41" href="#41">41</a>                  String name = nextElement.getDisplayName();
-<a class="jxr_linenumber" name="42" href="#42">42</a>                  LOG.info(<span class="jxr_string">"Iterating over network interfaces, found '{}'"</span>, name);
-<a class="jxr_linenumber" name="43" href="#43">43</a>                  <strong class="jxr_keyword">boolean</strong> hasInet = Collections.list(nextElement.getInetAddresses()).size() &gt; 1; <em class="jxr_comment">// Checking that inet exists, to avoid taking iBridge</em>
-<a class="jxr_linenumber" name="44" href="#44">44</a>                  <strong class="jxr_keyword">if</strong> ((name.startsWith(MAC_TSO_NET_IFACE_PREFIX) &amp;&amp; hasInet ) ||
-<a class="jxr_linenumber" name="45" href="#45">45</a>                          name.startsWith(LINUX_TSO_NET_IFACE_PREFIX)) {
-<a class="jxr_linenumber" name="46" href="#46">46</a>                    <strong class="jxr_keyword">return</strong> name;
-<a class="jxr_linenumber" name="47" href="#47">47</a>                }
-<a class="jxr_linenumber" name="48" href="#48">48</a>              }
-<a class="jxr_linenumber" name="49" href="#49">49</a>          } <strong class="jxr_keyword">catch</strong> (SocketException ignored) {
-<a class="jxr_linenumber" name="50" href="#50">50</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Failed to find any network interfaces"</span>, ignored);
-<a class="jxr_linenumber" name="51" href="#51">51</a>          }
-<a class="jxr_linenumber" name="52" href="#52">52</a>          <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(String.format(<span class="jxr_string">"No network '%s*'/'%s*' interfaces found"</span>,
-<a class="jxr_linenumber" name="53" href="#53">53</a>                                                           MAC_TSO_NET_IFACE_PREFIX, LINUX_TSO_NET_IFACE_PREFIX));
-<a class="jxr_linenumber" name="54" href="#54">54</a>  
-<a class="jxr_linenumber" name="55" href="#55">55</a>      }
-<a class="jxr_linenumber" name="56" href="#56">56</a>  
-<a class="jxr_linenumber" name="57" href="#57">57</a>  }
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Enumeration;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/omid/NetworkUtils.html">NetworkUtils</a> {
+<a class="jxr_linenumber" name="28" href="#28">28</a>  
+<a class="jxr_linenumber" name="29" href="#29">29</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(NetworkUtils.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LINUX_TSO_NET_IFACE_PREFIX = <span class="jxr_string">"eth"</span>;
+<a class="jxr_linenumber" name="32" href="#32">32</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MAC_TSO_NET_IFACE_PREFIX = <span class="jxr_string">"en"</span>;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  
+<a class="jxr_linenumber" name="34" href="#34">34</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String getDefaultNetworkInterface() {
+<a class="jxr_linenumber" name="35" href="#35">35</a>  
+<a class="jxr_linenumber" name="36" href="#36">36</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="37" href="#37">37</a>              Enumeration&lt;NetworkInterface&gt; networkInterfaces = NetworkInterface.getNetworkInterfaces();
+<a class="jxr_linenumber" name="38" href="#38">38</a>              <strong class="jxr_keyword">while</strong> (networkInterfaces.hasMoreElements()) {
+<a class="jxr_linenumber" name="39" href="#39">39</a>                  String name = networkInterfaces.nextElement().getDisplayName();
+<a class="jxr_linenumber" name="40" href="#40">40</a>                  LOG.info(<span class="jxr_string">"Iterating over network interfaces, found '{}'"</span>, name);
+<a class="jxr_linenumber" name="41" href="#41">41</a>                  <strong class="jxr_keyword">if</strong> (name.startsWith(MAC_TSO_NET_IFACE_PREFIX) || name.startsWith(LINUX_TSO_NET_IFACE_PREFIX)) {
+<a class="jxr_linenumber" name="42" href="#42">42</a>                      <strong class="jxr_keyword">return</strong> name;
+<a class="jxr_linenumber" name="43" href="#43">43</a>                  }
+<a class="jxr_linenumber" name="44" href="#44">44</a>              }
+<a class="jxr_linenumber" name="45" href="#45">45</a>          } <strong class="jxr_keyword">catch</strong> (SocketException ignored) {
+<a class="jxr_linenumber" name="46" href="#46">46</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Failed to find any network interfaces"</span>, ignored);
+<a class="jxr_linenumber" name="47" href="#47">47</a>          }
+<a class="jxr_linenumber" name="48" href="#48">48</a>          <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(String.format(<span class="jxr_string">"No network '%s*'/'%s*' interfaces found"</span>,
+<a class="jxr_linenumber" name="49" href="#49">49</a>                                                           MAC_TSO_NET_IFACE_PREFIX, LINUX_TSO_NET_IFACE_PREFIX));
+<a class="jxr_linenumber" name="50" href="#50">50</a>  
+<a class="jxr_linenumber" name="51" href="#51">51</a>      }
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/OmidFilterBase.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/OmidFilterBase.html b/xref/org/apache/omid/OmidFilterBase.html
new file mode 100644
index 0000000..d33b2ad
--- /dev/null
+++ b/xref/org/apache/omid/OmidFilterBase.html
@@ -0,0 +1,35 @@
+<!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" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+<title>OmidFilterBase xref</title>
+<link type="text/css" rel="stylesheet" href="../../../stylesheet.css" />
+</head>
+<body>
+<div id="overview"><a href="../../../../../target/site/apidocs/org/apache/omid/OmidFilterBase.html">View Javadoc</a></div><pre>
+
+<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
+<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
+<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
+<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
+<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
+<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
+<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
+<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
+<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
+<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
+<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
+<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
+<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
+<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * limitations under the License.</em>
+<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> */</em>
+<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.omid;
+<a class="jxr_linenumber" name="19" href="#19">19</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.filter.FilterBase;
+<a class="jxr_linenumber" name="20" href="#20">20</a>  
+<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/omid/OmidFilterBase.html">OmidFilterBase</a> <strong class="jxr_keyword">extends</strong> FilterBase {}
+</pre>
+<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/YAMLUtils.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/YAMLUtils.html b/xref/org/apache/omid/YAMLUtils.html
index 570b146..4d3d6b4 100644
--- a/xref/org/apache/omid/YAMLUtils.html
+++ b/xref/org/apache/omid/YAMLUtils.html
@@ -40,62 +40,55 @@
 <a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
 <a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
 <a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>  @SuppressWarnings(<span class="jxr_string">"WeakerAccess"</span>)
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/omid/YAMLUtils.html">YAMLUtils</a> {
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(YAMLUtils.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="37" href="#37">37</a>  
-<a class="jxr_linenumber" name="38" href="#38">38</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> loadSettings(String resourcePath, String defaultResourcePath, Object bean) {
-<a class="jxr_linenumber" name="39" href="#39">39</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="40" href="#40">40</a>              Map properties = loadSettings(resourcePath, defaultResourcePath);
-<a class="jxr_linenumber" name="41" href="#41">41</a>              BeanUtils.populate(bean, properties);
-<a class="jxr_linenumber" name="42" href="#42">42</a>          } <strong class="jxr_keyword">catch</strong> (IllegalAccessException | InvocationTargetException | IOException e) {
-<a class="jxr_linenumber" name="43" href="#43">43</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(e);
-<a class="jxr_linenumber" name="44" href="#44">44</a>          }
-<a class="jxr_linenumber" name="45" href="#45">45</a>      }
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> loadSettings(String resourcePath, Object bean) {
-<a class="jxr_linenumber" name="48" href="#48">48</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="49" href="#49">49</a>              Map properties = loadSettings(<strong class="jxr_keyword">null</strong>, resourcePath);
-<a class="jxr_linenumber" name="50" href="#50">50</a>              BeanUtils.populate(bean, properties);
-<a class="jxr_linenumber" name="51" href="#51">51</a>          } <strong class="jxr_keyword">catch</strong> (IllegalAccessException | InvocationTargetException | IOException e) {
-<a class="jxr_linenumber" name="52" href="#52">52</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(e);
-<a class="jxr_linenumber" name="53" href="#53">53</a>          }
-<a class="jxr_linenumber" name="54" href="#54">54</a>      }
-<a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>      @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">public</strong> Map loadSettings(String resourcePath, String defaultResourcePath) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="58" href="#58">58</a>          Map defaultSetting = loadAsMap(defaultResourcePath);
-<a class="jxr_linenumber" name="59" href="#59">59</a>          Preconditions.checkState(defaultSetting.size() &gt; 0, String.format(<span class="jxr_string">"Failed to load file '%s' from classpath"</span>, defaultResourcePath));
-<a class="jxr_linenumber" name="60" href="#60">60</a>          <strong class="jxr_keyword">if</strong> (resourcePath != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="61" href="#61">61</a>              Map userSetting = loadAsMap(resourcePath);
-<a class="jxr_linenumber" name="62" href="#62">62</a>              defaultSetting.putAll(userSetting);
-<a class="jxr_linenumber" name="63" href="#63">63</a>          }
-<a class="jxr_linenumber" name="64" href="#64">64</a>          <strong class="jxr_keyword">return</strong> defaultSetting;
-<a class="jxr_linenumber" name="65" href="#65">65</a>      }
-<a class="jxr_linenumber" name="66" href="#66">66</a>  
-<a class="jxr_linenumber" name="67" href="#67">67</a>      @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">public</strong> Map loadAsMap(String path) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="69" href="#69">69</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="70" href="#70">70</a>              String content = Resources.toString(Resources.getResource(path), Charset.forName(<span class="jxr_string">"UTF-8"</span>));
-<a class="jxr_linenumber" name="71" href="#71">71</a>              LOG.debug(<span class="jxr_string">"Loaded resource file '{}'\n{}"</span>, path, content);
-<a class="jxr_linenumber" name="72" href="#72">72</a>              <strong class="jxr_keyword">return</strong> loadStringAsMap(content);
-<a class="jxr_linenumber" name="73" href="#73">73</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="74" href="#74">74</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> HashMap();
-<a class="jxr_linenumber" name="75" href="#75">75</a>          }
-<a class="jxr_linenumber" name="76" href="#76">76</a>      }
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>      @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">public</strong> Map loadStringAsMap(String content) {
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="81" href="#81">81</a>              Map settings = <strong class="jxr_keyword">new</strong> Yaml().loadAs(content, Map.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="82" href="#82">82</a>              <strong class="jxr_keyword">return</strong> (settings != <strong class="jxr_keyword">null</strong>) ? settings : <strong class="jxr_keyword">new</strong> HashMap(0);
-<a class="jxr_linenumber" name="83" href="#83">83</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
-<a class="jxr_linenumber" name="84" href="#84">84</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> HashMap();
-<a class="jxr_linenumber" name="85" href="#85">85</a>          }
-<a class="jxr_linenumber" name="86" href="#86">86</a>      }
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>  }
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/omid/YAMLUtils.html">YAMLUtils</a> {
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(YAMLUtils.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> loadSettings(String resourcePath, String defaultResourcePath, Object bean) {
+<a class="jxr_linenumber" name="38" href="#38">38</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="39" href="#39">39</a>              Map properties = loadSettings(resourcePath, defaultResourcePath);
+<a class="jxr_linenumber" name="40" href="#40">40</a>              BeanUtils.populate(bean, properties);
+<a class="jxr_linenumber" name="41" href="#41">41</a>          } <strong class="jxr_keyword">catch</strong> (IllegalAccessException | InvocationTargetException | IOException e) {
+<a class="jxr_linenumber" name="42" href="#42">42</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(e);
+<a class="jxr_linenumber" name="43" href="#43">43</a>          }
+<a class="jxr_linenumber" name="44" href="#44">44</a>      }
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> loadSettings(String resourcePath, Object bean) {
+<a class="jxr_linenumber" name="47" href="#47">47</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="48" href="#48">48</a>              Map properties = loadSettings(<strong class="jxr_keyword">null</strong>, resourcePath);
+<a class="jxr_linenumber" name="49" href="#49">49</a>              BeanUtils.populate(bean, properties);
+<a class="jxr_linenumber" name="50" href="#50">50</a>          } <strong class="jxr_keyword">catch</strong> (IllegalAccessException | InvocationTargetException | IOException e) {
+<a class="jxr_linenumber" name="51" href="#51">51</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalStateException(e);
+<a class="jxr_linenumber" name="52" href="#52">52</a>          }
+<a class="jxr_linenumber" name="53" href="#53">53</a>      }
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>      @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> Map loadSettings(String resourcePath, String defaultResourcePath) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="57" href="#57">57</a>          Map defaultSetting = loadAsMap(defaultResourcePath);
+<a class="jxr_linenumber" name="58" href="#58">58</a>          Preconditions.checkState(defaultSetting.size() &gt; 0, String.format(<span class="jxr_string">"Failed to load file '%s' from classpath"</span>, defaultResourcePath));
+<a class="jxr_linenumber" name="59" href="#59">59</a>          <strong class="jxr_keyword">if</strong> (resourcePath != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="60" href="#60">60</a>              Map userSetting = loadAsMap(resourcePath);
+<a class="jxr_linenumber" name="61" href="#61">61</a>              defaultSetting.putAll(userSetting);
+<a class="jxr_linenumber" name="62" href="#62">62</a>          }
+<a class="jxr_linenumber" name="63" href="#63">63</a>          <strong class="jxr_keyword">return</strong> defaultSetting;
+<a class="jxr_linenumber" name="64" href="#64">64</a>      }
+<a class="jxr_linenumber" name="65" href="#65">65</a>  
+<a class="jxr_linenumber" name="66" href="#66">66</a>      @SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">private</strong> Map loadAsMap(String path) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="68" href="#68">68</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="69" href="#69">69</a>              String content = Resources.toString(Resources.getResource(path), Charset.forName(<span class="jxr_string">"UTF-8"</span>));
+<a class="jxr_linenumber" name="70" href="#70">70</a>              LOG.debug(<span class="jxr_string">"Loaded resource file '{}'\n{}"</span>, path, content);
+<a class="jxr_linenumber" name="71" href="#71">71</a>              Map settings = <strong class="jxr_keyword">new</strong> Yaml().loadAs(content, Map.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="72" href="#72">72</a>              <strong class="jxr_keyword">if</strong> (settings == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="73" href="#73">73</a>                  settings = <strong class="jxr_keyword">new</strong> HashMap(0);
+<a class="jxr_linenumber" name="74" href="#74">74</a>              }
+<a class="jxr_linenumber" name="75" href="#75">75</a>              <strong class="jxr_keyword">return</strong> settings;
+<a class="jxr_linenumber" name="76" href="#76">76</a>          } <strong class="jxr_keyword">catch</strong> (IllegalArgumentException e) {
+<a class="jxr_linenumber" name="77" href="#77">77</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> HashMap();
+<a class="jxr_linenumber" name="78" href="#78">78</a>          }
+<a class="jxr_linenumber" name="79" href="#79">79</a>      }
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>  }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/benchmarks/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/benchmarks/hbase/package-frame.html b/xref/org/apache/omid/benchmarks/hbase/package-frame.html
index e109787..5371a2e 100644
--- a/xref/org/apache/omid/benchmarks/hbase/package-frame.html
+++ b/xref/org/apache/omid/benchmarks/hbase/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.benchmarks.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.benchmarks.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/benchmarks/hbase/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/benchmarks/hbase/package-summary.html b/xref/org/apache/omid/benchmarks/hbase/package-summary.html
index fe61387..17fdba8 100644
--- a/xref/org/apache/omid/benchmarks/hbase/package-summary.html
+++ b/xref/org/apache/omid/benchmarks/hbase/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.benchmarks.hbase</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.benchmarks.hbase</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/benchmarks/tso/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/benchmarks/tso/package-frame.html b/xref/org/apache/omid/benchmarks/tso/package-frame.html
index bfb3d0e..40adc10 100644
--- a/xref/org/apache/omid/benchmarks/tso/package-frame.html
+++ b/xref/org/apache/omid/benchmarks/tso/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.benchmarks.tso</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.benchmarks.tso</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/benchmarks/tso/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/benchmarks/tso/package-summary.html b/xref/org/apache/omid/benchmarks/tso/package-summary.html
index a17c9d7..7d9a3b0 100644
--- a/xref/org/apache/omid/benchmarks/tso/package-summary.html
+++ b/xref/org/apache/omid/benchmarks/tso/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.benchmarks.tso</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.benchmarks.tso</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/benchmarks/utils/package-frame.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/benchmarks/utils/package-frame.html b/xref/org/apache/omid/benchmarks/utils/package-frame.html
index 7ca2547..c98c5ef 100644
--- a/xref/org/apache/omid/benchmarks/utils/package-frame.html
+++ b/xref/org/apache/omid/benchmarks/utils/package-frame.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.benchmarks.utils</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.benchmarks.utils</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref/org/apache/omid/benchmarks/utils/package-summary.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/omid/benchmarks/utils/package-summary.html b/xref/org/apache/omid/benchmarks/utils/package-summary.html
index 7a6321a..7b66516 100644
--- a/xref/org/apache/omid/benchmarks/utils/package-summary.html
+++ b/xref/org/apache/omid/benchmarks/utils/package-summary.html
@@ -3,7 +3,7 @@
 <html xml:lang="en" lang="en">
 	<head>
 		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-		<title>Omid 0.9.0.0 Reference Package org.apache.omid.benchmarks.utils</title>
+		<title>Omid 0.8.2.11-SNAPSHOT Reference Package org.apache.omid.benchmarks.utils</title>
 		<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="style" />
 	</head>
 	<body>



[27/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/TestPersistenceProcessorHandler.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/TestPersistenceProcessorHandler.html b/xref-test/org/apache/omid/tso/TestPersistenceProcessorHandler.html
index 08b76e3..161b1ad 100644
--- a/xref-test/org/apache/omid/tso/TestPersistenceProcessorHandler.html
+++ b/xref-test/org/apache/omid/tso/TestPersistenceProcessorHandler.html
@@ -136,384 +136,354 @@
 <a class="jxr_linenumber" name="126" href="#126">126</a>         Mockito.reset(mockWriter);
 <a class="jxr_linenumber" name="127" href="#127">127</a>     }
 <a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>     @Test(timeOut = 1_000)
-<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPersistentProcessorHandlerIdsAreCreatedConsecutive() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="129" href="#129">129</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfEmptyBatchPersistEvent() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="131" href="#131">131</a> 
-<a class="jxr_linenumber" name="132" href="#132">132</a>         TSOServerConfig tsoConfig = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="133" href="#133">133</a>         tsoConfig.setNumConcurrentCTWriters(32);
-<a class="jxr_linenumber" name="134" href="#134">134</a> 
-<a class="jxr_linenumber" name="135" href="#135">135</a>         PersistenceProcessorHandler[] handlers = <strong class="jxr_keyword">new</strong> PersistenceProcessorHandler[tsoConfig.getNumConcurrentCTWriters()];
-<a class="jxr_linenumber" name="136" href="#136">136</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; tsoConfig.getNumConcurrentCTWriters(); i++) {
-<a class="jxr_linenumber" name="137" href="#137">137</a>             handlers[i] = <strong class="jxr_keyword">new</strong> PersistenceProcessorHandler(metrics,
-<a class="jxr_linenumber" name="138" href="#138">138</a>                                                           <span class="jxr_string">"localhost:1234"</span>,
-<a class="jxr_linenumber" name="139" href="#139">139</a>                                                           mock(LeaseManager.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="140" href="#140">140</a>                                                           commitTable,
-<a class="jxr_linenumber" name="141" href="#141">141</a>                                                           mock(ReplyProcessor.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="142" href="#142">142</a>                                                           retryProcessor,
-<a class="jxr_linenumber" name="143" href="#143">143</a>                                                           panicker);
-<a class="jxr_linenumber" name="144" href="#144">144</a>         }
+<a class="jxr_linenumber" name="132" href="#132">132</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="133" href="#133">133</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="134" href="#134">134</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="135" href="#135">135</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="136" href="#136">136</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="137" href="#137">137</a> 
+<a class="jxr_linenumber" name="138" href="#138">138</a>         verify(persistenceHandler, times(1)).flush(eq(0));
+<a class="jxr_linenumber" name="139" href="#139">139</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
+<a class="jxr_linenumber" name="140" href="#140">140</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="141" href="#141">141</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="142" href="#142">142</a>         assertTrue(batch.isEmpty());
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>     }
 <a class="jxr_linenumber" name="145" href="#145">145</a> 
-<a class="jxr_linenumber" name="146" href="#146">146</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; tsoConfig.getNumConcurrentCTWriters(); i++) {
-<a class="jxr_linenumber" name="147" href="#147">147</a>             <em class="jxr_comment">// Required to generalize the cases when other tests have increased the static variable assigning the ids</em>
-<a class="jxr_linenumber" name="148" href="#148">148</a>             <strong class="jxr_keyword">if</strong> (i + 1 &lt; tsoConfig.getNumConcurrentCTWriters()) {
-<a class="jxr_linenumber" name="149" href="#149">149</a>                 <strong class="jxr_keyword">int</strong> followingHandlerIdAsInt = Integer.valueOf(handlers[i + 1].getId());
-<a class="jxr_linenumber" name="150" href="#150">150</a>                 assertEquals(handlers[i].getId(), String.valueOf(followingHandlerIdAsInt - 1));
-<a class="jxr_linenumber" name="151" href="#151">151</a>             } <strong class="jxr_keyword">else</strong> { <em class="jxr_comment">// Final case: compare with the last element that the sequence creator assigned</em>
-<a class="jxr_linenumber" name="152" href="#152">152</a>                 <strong class="jxr_keyword">int</strong> followingHandlerIdAsInt = PersistenceProcessorHandler.consecutiveSequenceCreator.get();
-<a class="jxr_linenumber" name="153" href="#153">153</a>                 assertEquals(handlers[i].getId(), String.valueOf(followingHandlerIdAsInt - 1));
-<a class="jxr_linenumber" name="154" href="#154">154</a>             }
-<a class="jxr_linenumber" name="155" href="#155">155</a>         }
-<a class="jxr_linenumber" name="156" href="#156">156</a> 
-<a class="jxr_linenumber" name="157" href="#157">157</a>     }
-<a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfEmptyBatchPersistEvent() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="161" href="#161">161</a> 
-<a class="jxr_linenumber" name="162" href="#162">162</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="163" href="#163">163</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="164" href="#164">164</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="165" href="#165">165</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="166" href="#166">166</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="146" href="#146">146</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithASingleTimestampEvent() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="148" href="#148">148</a> 
+<a class="jxr_linenumber" name="149" href="#149">149</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="150" href="#150">150</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="151" href="#151">151</a>         batch.addTimestamp(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="152" href="#152">152</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="153" href="#153">153</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="154" href="#154">154</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="155" href="#155">155</a> 
+<a class="jxr_linenumber" name="156" href="#156">156</a>         verify(persistenceHandler, times(1)).flush(eq(0));
+<a class="jxr_linenumber" name="157" href="#157">157</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
+<a class="jxr_linenumber" name="158" href="#158">158</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="159" href="#159">159</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="160" href="#160">160</a>         assertEquals(batch.getNumEvents(), 1);
+<a class="jxr_linenumber" name="161" href="#161">161</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
+<a class="jxr_linenumber" name="162" href="#162">162</a> 
+<a class="jxr_linenumber" name="163" href="#163">163</a>     }
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithASingleCommitEvent() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="167" href="#167">167</a> 
-<a class="jxr_linenumber" name="168" href="#168">168</a>         verify(persistenceHandler, times(1)).flush(eq(0));
-<a class="jxr_linenumber" name="169" href="#169">169</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
-<a class="jxr_linenumber" name="170" href="#170">170</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="171" href="#171">171</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="172" href="#172">172</a>         assertTrue(batch.isEmpty());
-<a class="jxr_linenumber" name="173" href="#173">173</a> 
-<a class="jxr_linenumber" name="174" href="#174">174</a>     }
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="177" href="#177">177</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithASingleTimestampEvent() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="178" href="#178">178</a> 
-<a class="jxr_linenumber" name="179" href="#179">179</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="180" href="#180">180</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="181" href="#181">181</a>         batch.addTimestamp(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="182" href="#182">182</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="183" href="#183">183</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="184" href="#184">184</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="185" href="#185">185</a> 
-<a class="jxr_linenumber" name="186" href="#186">186</a>         verify(persistenceHandler, times(1)).flush(eq(0));
-<a class="jxr_linenumber" name="187" href="#187">187</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
-<a class="jxr_linenumber" name="188" href="#188">188</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="189" href="#189">189</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="190" href="#190">190</a>         assertEquals(batch.getNumEvents(), 1);
-<a class="jxr_linenumber" name="191" href="#191">191</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
-<a class="jxr_linenumber" name="192" href="#192">192</a> 
-<a class="jxr_linenumber" name="193" href="#193">193</a>     }
+<a class="jxr_linenumber" name="168" href="#168">168</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="169" href="#169">169</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="170" href="#170">170</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="171" href="#171">171</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="172" href="#172">172</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="173" href="#173">173</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="174" href="#174">174</a> 
+<a class="jxr_linenumber" name="175" href="#175">175</a>         verify(persistenceHandler, times(1)).flush(eq(1));
+<a class="jxr_linenumber" name="176" href="#176">176</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(batch);
+<a class="jxr_linenumber" name="177" href="#177">177</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="178" href="#178">178</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="179" href="#179">179</a>         assertEquals(batch.getNumEvents(), 1);
+<a class="jxr_linenumber" name="180" href="#180">180</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
+<a class="jxr_linenumber" name="181" href="#181">181</a>         assertEquals(batch.get(0).getCommitTimestamp(), FIRST_CT);
+<a class="jxr_linenumber" name="182" href="#182">182</a> 
+<a class="jxr_linenumber" name="183" href="#183">183</a>     }
+<a class="jxr_linenumber" name="184" href="#184">184</a> 
+<a class="jxr_linenumber" name="185" href="#185">185</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithASingleAbortEventNoRetry() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="187" href="#187">187</a> 
+<a class="jxr_linenumber" name="188" href="#188">188</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="189" href="#189">189</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="190" href="#190">190</a>         batch.addAbort(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="191" href="#191">191</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="192" href="#192">192</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="193" href="#193">193</a>         persistenceHandler.onEvent(batchEvent);
 <a class="jxr_linenumber" name="194" href="#194">194</a> 
-<a class="jxr_linenumber" name="195" href="#195">195</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithASingleCommitEvent() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="197" href="#197">197</a> 
-<a class="jxr_linenumber" name="198" href="#198">198</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="199" href="#199">199</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="200" href="#200">200</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="201" href="#201">201</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="202" href="#202">202</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="203" href="#203">203</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="204" href="#204">204</a> 
-<a class="jxr_linenumber" name="205" href="#205">205</a>         verify(persistenceHandler, times(1)).flush(eq(1));
-<a class="jxr_linenumber" name="206" href="#206">206</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(batch);
-<a class="jxr_linenumber" name="207" href="#207">207</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="208" href="#208">208</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="209" href="#209">209</a>         assertEquals(batch.getNumEvents(), 1);
-<a class="jxr_linenumber" name="210" href="#210">210</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
-<a class="jxr_linenumber" name="211" href="#211">211</a>         assertEquals(batch.get(0).getCommitTimestamp(), FIRST_CT);
+<a class="jxr_linenumber" name="195" href="#195">195</a>         verify(persistenceHandler, times(1)).flush(eq(0));
+<a class="jxr_linenumber" name="196" href="#196">196</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(batch);
+<a class="jxr_linenumber" name="197" href="#197">197</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="198" href="#198">198</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="199" href="#199">199</a>         assertEquals(batch.getNumEvents(), 1);
+<a class="jxr_linenumber" name="200" href="#200">200</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>     }
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="205" href="#205">205</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithASingleCommitRetryEvent() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="208" href="#208">208</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="209" href="#209">209</a>         batch.addCommitRetry(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="210" href="#210">210</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="211" href="#211">211</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
 <a class="jxr_linenumber" name="212" href="#212">212</a> 
-<a class="jxr_linenumber" name="213" href="#213">213</a>     }
-<a class="jxr_linenumber" name="214" href="#214">214</a> 
-<a class="jxr_linenumber" name="215" href="#215">215</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="216" href="#216">216</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithASingleAbortEventNoRetry() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="217" href="#217">217</a> 
-<a class="jxr_linenumber" name="218" href="#218">218</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="219" href="#219">219</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="220" href="#220">220</a>         batch.addAbort(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="221" href="#221">221</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="222" href="#222">222</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="223" href="#223">223</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="224" href="#224">224</a> 
-<a class="jxr_linenumber" name="225" href="#225">225</a>         verify(persistenceHandler, times(1)).flush(eq(0));
-<a class="jxr_linenumber" name="226" href="#226">226</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(batch);
-<a class="jxr_linenumber" name="227" href="#227">227</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="228" href="#228">228</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="229" href="#229">229</a>         assertEquals(batch.getNumEvents(), 1);
-<a class="jxr_linenumber" name="230" href="#230">230</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
-<a class="jxr_linenumber" name="231" href="#231">231</a> 
-<a class="jxr_linenumber" name="232" href="#232">232</a>     }
+<a class="jxr_linenumber" name="213" href="#213">213</a>         <em class="jxr_comment">// Call process method</em>
+<a class="jxr_linenumber" name="214" href="#214">214</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>         verify(persistenceHandler, times(1)).flush(eq(0));
+<a class="jxr_linenumber" name="217" href="#217">217</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(batch);
+<a class="jxr_linenumber" name="218" href="#218">218</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(FIRST_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="219" href="#219">219</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="220" href="#220">220</a>         assertEquals(batch.getNumEvents(), 0);
+<a class="jxr_linenumber" name="221" href="#221">221</a> 
+<a class="jxr_linenumber" name="222" href="#222">222</a>     }
+<a class="jxr_linenumber" name="223" href="#223">223</a> 
+<a class="jxr_linenumber" name="224" href="#224">224</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="225" href="#225">225</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWith2EventsCommitAndCommitRetry() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="228" href="#228">228</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="229" href="#229">229</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="230" href="#230">230</a>         batch.addCommitRetry(SECOND_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="231" href="#231">231</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="232" href="#232">232</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
 <a class="jxr_linenumber" name="233" href="#233">233</a> 
-<a class="jxr_linenumber" name="234" href="#234">234</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="235" href="#235">235</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithASingleCommitRetryEvent() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="234" href="#234">234</a>         <em class="jxr_comment">// Initial assertion</em>
+<a class="jxr_linenumber" name="235" href="#235">235</a>         assertEquals(batch.getNumEvents(), 2);
 <a class="jxr_linenumber" name="236" href="#236">236</a> 
-<a class="jxr_linenumber" name="237" href="#237">237</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="238" href="#238">238</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="239" href="#239">239</a>         batch.addCommitRetry(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="240" href="#240">240</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="241" href="#241">241</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="242" href="#242">242</a> 
-<a class="jxr_linenumber" name="243" href="#243">243</a>         <em class="jxr_comment">// Call process method</em>
-<a class="jxr_linenumber" name="244" href="#244">244</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="245" href="#245">245</a> 
-<a class="jxr_linenumber" name="246" href="#246">246</a>         verify(persistenceHandler, times(1)).flush(eq(0));
-<a class="jxr_linenumber" name="247" href="#247">247</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(batch);
-<a class="jxr_linenumber" name="248" href="#248">248</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(FIRST_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="249" href="#249">249</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="250" href="#250">250</a>         assertEquals(batch.getNumEvents(), 0);
-<a class="jxr_linenumber" name="251" href="#251">251</a> 
-<a class="jxr_linenumber" name="252" href="#252">252</a>     }
-<a class="jxr_linenumber" name="253" href="#253">253</a> 
-<a class="jxr_linenumber" name="254" href="#254">254</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="255" href="#255">255</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWith2EventsCommitAndCommitRetry() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="256" href="#256">256</a> 
-<a class="jxr_linenumber" name="257" href="#257">257</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="258" href="#258">258</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="259" href="#259">259</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="260" href="#260">260</a>         batch.addCommitRetry(SECOND_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="261" href="#261">261</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="262" href="#262">262</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="263" href="#263">263</a> 
-<a class="jxr_linenumber" name="264" href="#264">264</a>         <em class="jxr_comment">// Initial assertion</em>
-<a class="jxr_linenumber" name="265" href="#265">265</a>         assertEquals(batch.getNumEvents(), 2);
-<a class="jxr_linenumber" name="266" href="#266">266</a> 
-<a class="jxr_linenumber" name="267" href="#267">267</a>         <em class="jxr_comment">// Call process method</em>
-<a class="jxr_linenumber" name="268" href="#268">268</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="269" href="#269">269</a> 
-<a class="jxr_linenumber" name="270" href="#270">270</a>         verify(persistenceHandler, times(1)).flush(eq(1));
-<a class="jxr_linenumber" name="271" href="#271">271</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
-<a class="jxr_linenumber" name="272" href="#272">272</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(SECOND_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="273" href="#273">273</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="274" href="#274">274</a>         assertEquals(batch.getNumEvents(), 1);
-<a class="jxr_linenumber" name="275" href="#275">275</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
-<a class="jxr_linenumber" name="276" href="#276">276</a>         assertEquals(batch.get(0).getCommitTimestamp(), FIRST_CT);
-<a class="jxr_linenumber" name="277" href="#277">277</a> 
-<a class="jxr_linenumber" name="278" href="#278">278</a>     }
-<a class="jxr_linenumber" name="279" href="#279">279</a> 
-<a class="jxr_linenumber" name="280" href="#280">280</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="281" href="#281">281</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWith2EventsCommitRetryAndCommit() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="282" href="#282">282</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="283" href="#283">283</a>         <em class="jxr_comment">// Same test as testProcessingOfBatchPersistEventWith2EventsCommitAndCommitRetry but swapped events</em>
-<a class="jxr_linenumber" name="284" href="#284">284</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="285" href="#285">285</a> 
-<a class="jxr_linenumber" name="286" href="#286">286</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="287" href="#287">287</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="288" href="#288">288</a>         batch.addCommitRetry(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="289" href="#289">289</a>         batch.addCommit(SECOND_ST, SECOND_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="290" href="#290">290</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="291" href="#291">291</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="292" href="#292">292</a> 
-<a class="jxr_linenumber" name="293" href="#293">293</a>         <em class="jxr_comment">// Initial assertion</em>
-<a class="jxr_linenumber" name="294" href="#294">294</a>         assertEquals(batch.getNumEvents(), 2);
-<a class="jxr_linenumber" name="295" href="#295">295</a> 
-<a class="jxr_linenumber" name="296" href="#296">296</a>         <em class="jxr_comment">// Call process method</em>
-<a class="jxr_linenumber" name="297" href="#297">297</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="298" href="#298">298</a> 
-<a class="jxr_linenumber" name="299" href="#299">299</a>         verify(persistenceHandler, times(1)).flush(eq(1));
-<a class="jxr_linenumber" name="300" href="#300">300</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
-<a class="jxr_linenumber" name="301" href="#301">301</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(FIRST_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="302" href="#302">302</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="303" href="#303">303</a>         assertEquals(batch.getNumEvents(), 1);
-<a class="jxr_linenumber" name="304" href="#304">304</a>         assertEquals(batch.get(0).getStartTimestamp(), SECOND_ST);
-<a class="jxr_linenumber" name="305" href="#305">305</a>         assertEquals(batch.get(0).getCommitTimestamp(), SECOND_CT);
+<a class="jxr_linenumber" name="237" href="#237">237</a>         <em class="jxr_comment">// Call process method</em>
+<a class="jxr_linenumber" name="238" href="#238">238</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="239" href="#239">239</a> 
+<a class="jxr_linenumber" name="240" href="#240">240</a>         verify(persistenceHandler, times(1)).flush(eq(1));
+<a class="jxr_linenumber" name="241" href="#241">241</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
+<a class="jxr_linenumber" name="242" href="#242">242</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(SECOND_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="243" href="#243">243</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="244" href="#244">244</a>         assertEquals(batch.getNumEvents(), 1);
+<a class="jxr_linenumber" name="245" href="#245">245</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
+<a class="jxr_linenumber" name="246" href="#246">246</a>         assertEquals(batch.get(0).getCommitTimestamp(), FIRST_CT);
+<a class="jxr_linenumber" name="247" href="#247">247</a> 
+<a class="jxr_linenumber" name="248" href="#248">248</a>     }
+<a class="jxr_linenumber" name="249" href="#249">249</a> 
+<a class="jxr_linenumber" name="250" href="#250">250</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="251" href="#251">251</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWith2EventsCommitRetryAndCommit() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="252" href="#252">252</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="253" href="#253">253</a>         <em class="jxr_comment">// Same test as testProcessingOfBatchPersistEventWith2EventsCommitAndCommitRetry but swapped events</em>
+<a class="jxr_linenumber" name="254" href="#254">254</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="255" href="#255">255</a> 
+<a class="jxr_linenumber" name="256" href="#256">256</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="257" href="#257">257</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="258" href="#258">258</a>         batch.addCommitRetry(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="259" href="#259">259</a>         batch.addCommit(SECOND_ST, SECOND_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="260" href="#260">260</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="261" href="#261">261</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="262" href="#262">262</a> 
+<a class="jxr_linenumber" name="263" href="#263">263</a>         <em class="jxr_comment">// Initial assertion</em>
+<a class="jxr_linenumber" name="264" href="#264">264</a>         assertEquals(batch.getNumEvents(), 2);
+<a class="jxr_linenumber" name="265" href="#265">265</a> 
+<a class="jxr_linenumber" name="266" href="#266">266</a>         <em class="jxr_comment">// Call process method</em>
+<a class="jxr_linenumber" name="267" href="#267">267</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="268" href="#268">268</a> 
+<a class="jxr_linenumber" name="269" href="#269">269</a>         verify(persistenceHandler, times(1)).flush(eq(1));
+<a class="jxr_linenumber" name="270" href="#270">270</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
+<a class="jxr_linenumber" name="271" href="#271">271</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(FIRST_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="272" href="#272">272</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="273" href="#273">273</a>         assertEquals(batch.getNumEvents(), 1);
+<a class="jxr_linenumber" name="274" href="#274">274</a>         assertEquals(batch.get(0).getStartTimestamp(), SECOND_ST);
+<a class="jxr_linenumber" name="275" href="#275">275</a>         assertEquals(batch.get(0).getCommitTimestamp(), SECOND_CT);
+<a class="jxr_linenumber" name="276" href="#276">276</a> 
+<a class="jxr_linenumber" name="277" href="#277">277</a>     }
+<a class="jxr_linenumber" name="278" href="#278">278</a> 
+<a class="jxr_linenumber" name="279" href="#279">279</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="280" href="#280">280</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWith2CommitRetryEvents() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="281" href="#281">281</a> 
+<a class="jxr_linenumber" name="282" href="#282">282</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="283" href="#283">283</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="284" href="#284">284</a>         batch.addCommitRetry(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="285" href="#285">285</a>         batch.addCommitRetry(SECOND_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="286" href="#286">286</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="287" href="#287">287</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="288" href="#288">288</a> 
+<a class="jxr_linenumber" name="289" href="#289">289</a>         <em class="jxr_comment">// Initial assertion</em>
+<a class="jxr_linenumber" name="290" href="#290">290</a>         assertEquals(batch.getNumEvents(), 2);
+<a class="jxr_linenumber" name="291" href="#291">291</a> 
+<a class="jxr_linenumber" name="292" href="#292">292</a>         <em class="jxr_comment">// Call process method</em>
+<a class="jxr_linenumber" name="293" href="#293">293</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="294" href="#294">294</a> 
+<a class="jxr_linenumber" name="295" href="#295">295</a>         verify(persistenceHandler, times(1)).flush(eq(0));
+<a class="jxr_linenumber" name="296" href="#296">296</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
+<a class="jxr_linenumber" name="297" href="#297">297</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(FIRST_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="298" href="#298">298</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(SECOND_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="299" href="#299">299</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="300" href="#300">300</a>         assertEquals(batch.getNumEvents(), 0);
+<a class="jxr_linenumber" name="301" href="#301">301</a> 
+<a class="jxr_linenumber" name="302" href="#302">302</a>     }
+<a class="jxr_linenumber" name="303" href="#303">303</a> 
+<a class="jxr_linenumber" name="304" href="#304">304</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="305" href="#305">305</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWith2AbortEvents() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="306" href="#306">306</a> 
-<a class="jxr_linenumber" name="307" href="#307">307</a>     }
-<a class="jxr_linenumber" name="308" href="#308">308</a> 
-<a class="jxr_linenumber" name="309" href="#309">309</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="310" href="#310">310</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWith2CommitRetryEvents() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="311" href="#311">311</a> 
-<a class="jxr_linenumber" name="312" href="#312">312</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="313" href="#313">313</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="314" href="#314">314</a>         batch.addCommitRetry(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="315" href="#315">315</a>         batch.addCommitRetry(SECOND_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="316" href="#316">316</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="317" href="#317">317</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="318" href="#318">318</a> 
-<a class="jxr_linenumber" name="319" href="#319">319</a>         <em class="jxr_comment">// Initial assertion</em>
-<a class="jxr_linenumber" name="320" href="#320">320</a>         assertEquals(batch.getNumEvents(), 2);
-<a class="jxr_linenumber" name="321" href="#321">321</a> 
-<a class="jxr_linenumber" name="322" href="#322">322</a>         <em class="jxr_comment">// Call process method</em>
-<a class="jxr_linenumber" name="323" href="#323">323</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="324" href="#324">324</a> 
-<a class="jxr_linenumber" name="325" href="#325">325</a>         verify(persistenceHandler, times(1)).flush(eq(0));
-<a class="jxr_linenumber" name="326" href="#326">326</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
-<a class="jxr_linenumber" name="327" href="#327">327</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(FIRST_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="328" href="#328">328</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(SECOND_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="329" href="#329">329</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="330" href="#330">330</a>         assertEquals(batch.getNumEvents(), 0);
-<a class="jxr_linenumber" name="331" href="#331">331</a> 
-<a class="jxr_linenumber" name="332" href="#332">332</a>     }
+<a class="jxr_linenumber" name="307" href="#307">307</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="308" href="#308">308</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="309" href="#309">309</a>         batch.addAbort(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="310" href="#310">310</a>         batch.addAbort(SECOND_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="311" href="#311">311</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="312" href="#312">312</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="313" href="#313">313</a> 
+<a class="jxr_linenumber" name="314" href="#314">314</a>         <em class="jxr_comment">// Initial assertion</em>
+<a class="jxr_linenumber" name="315" href="#315">315</a>         assertEquals(batch.getNumEvents(), 2);
+<a class="jxr_linenumber" name="316" href="#316">316</a> 
+<a class="jxr_linenumber" name="317" href="#317">317</a>         <em class="jxr_comment">// Call process method</em>
+<a class="jxr_linenumber" name="318" href="#318">318</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="319" href="#319">319</a> 
+<a class="jxr_linenumber" name="320" href="#320">320</a>         verify(persistenceHandler, times(1)).flush(eq(0));
+<a class="jxr_linenumber" name="321" href="#321">321</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
+<a class="jxr_linenumber" name="322" href="#322">322</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="323" href="#323">323</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="324" href="#324">324</a>         assertEquals(batch.getNumEvents(), 2);
+<a class="jxr_linenumber" name="325" href="#325">325</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
+<a class="jxr_linenumber" name="326" href="#326">326</a>         assertEquals(batch.get(1).getStartTimestamp(), SECOND_ST);
+<a class="jxr_linenumber" name="327" href="#327">327</a> 
+<a class="jxr_linenumber" name="328" href="#328">328</a>     }
+<a class="jxr_linenumber" name="329" href="#329">329</a> 
+<a class="jxr_linenumber" name="330" href="#330">330</a> 
+<a class="jxr_linenumber" name="331" href="#331">331</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="332" href="#332">332</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithMultipleRetryAndNonRetryEvents() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="333" href="#333">333</a> 
-<a class="jxr_linenumber" name="334" href="#334">334</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="335" href="#335">335</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWith2AbortEvents() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="334" href="#334">334</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="335" href="#335">335</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
 <a class="jxr_linenumber" name="336" href="#336">336</a> 
-<a class="jxr_linenumber" name="337" href="#337">337</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="338" href="#338">338</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="339" href="#339">339</a>         batch.addAbort(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="340" href="#340">340</a>         batch.addAbort(SECOND_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="341" href="#341">341</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="342" href="#342">342</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="343" href="#343">343</a> 
-<a class="jxr_linenumber" name="344" href="#344">344</a>         <em class="jxr_comment">// Initial assertion</em>
-<a class="jxr_linenumber" name="345" href="#345">345</a>         assertEquals(batch.getNumEvents(), 2);
-<a class="jxr_linenumber" name="346" href="#346">346</a> 
-<a class="jxr_linenumber" name="347" href="#347">347</a>         <em class="jxr_comment">// Call process method</em>
-<a class="jxr_linenumber" name="348" href="#348">348</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="349" href="#349">349</a> 
-<a class="jxr_linenumber" name="350" href="#350">350</a>         verify(persistenceHandler, times(1)).flush(eq(0));
-<a class="jxr_linenumber" name="351" href="#351">351</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
-<a class="jxr_linenumber" name="352" href="#352">352</a>         verify(retryProcessor, never()).disambiguateRetryRequestHeuristically(anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="353" href="#353">353</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="354" href="#354">354</a>         assertEquals(batch.getNumEvents(), 2);
-<a class="jxr_linenumber" name="355" href="#355">355</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
-<a class="jxr_linenumber" name="356" href="#356">356</a>         assertEquals(batch.get(1).getStartTimestamp(), SECOND_ST);
-<a class="jxr_linenumber" name="357" href="#357">357</a> 
-<a class="jxr_linenumber" name="358" href="#358">358</a>     }
-<a class="jxr_linenumber" name="359" href="#359">359</a> 
-<a class="jxr_linenumber" name="360" href="#360">360</a> 
-<a class="jxr_linenumber" name="361" href="#361">361</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="362" href="#362">362</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testProcessingOfBatchPersistEventWithMultipleRetryAndNonRetryEvents() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="337" href="#337">337</a>         batch.addTimestamp(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="338" href="#338">338</a>         batch.addCommitRetry(SECOND_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="339" href="#339">339</a>         batch.addCommit(THIRD_ST, THIRD_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="340" href="#340">340</a>         batch.addAbort(FOURTH_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="341" href="#341">341</a>         batch.addCommit(FIFTH_ST, FIFTH_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="342" href="#342">342</a>         batch.addCommitRetry(SIXTH_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="343" href="#343">343</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="344" href="#344">344</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="345" href="#345">345</a> 
+<a class="jxr_linenumber" name="346" href="#346">346</a>         <em class="jxr_comment">// Initial assertion</em>
+<a class="jxr_linenumber" name="347" href="#347">347</a>         assertEquals(batch.getNumEvents(), 6);
+<a class="jxr_linenumber" name="348" href="#348">348</a> 
+<a class="jxr_linenumber" name="349" href="#349">349</a>         <em class="jxr_comment">// Call process method</em>
+<a class="jxr_linenumber" name="350" href="#350">350</a>         persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="351" href="#351">351</a> 
+<a class="jxr_linenumber" name="352" href="#352">352</a>         verify(persistenceHandler, times(1)).flush(2); <em class="jxr_comment">// 2 commits to flush</em>
+<a class="jxr_linenumber" name="353" href="#353">353</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
+<a class="jxr_linenumber" name="354" href="#354">354</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(SECOND_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="355" href="#355">355</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
+<a class="jxr_linenumber" name="356" href="#356">356</a>         assertEquals(batch.getNumEvents(), 4);
+<a class="jxr_linenumber" name="357" href="#357">357</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
+<a class="jxr_linenumber" name="358" href="#358">358</a>         assertEquals(batch.get(1).getStartTimestamp(), FIFTH_ST);
+<a class="jxr_linenumber" name="359" href="#359">359</a>         assertEquals(batch.get(1).getCommitTimestamp(), FIFTH_CT);
+<a class="jxr_linenumber" name="360" href="#360">360</a>         assertEquals(batch.get(2).getStartTimestamp(), THIRD_ST);
+<a class="jxr_linenumber" name="361" href="#361">361</a>         assertEquals(batch.get(2).getCommitTimestamp(), THIRD_CT);
+<a class="jxr_linenumber" name="362" href="#362">362</a>         assertEquals(batch.get(3).getStartTimestamp(), FOURTH_ST);
 <a class="jxr_linenumber" name="363" href="#363">363</a> 
-<a class="jxr_linenumber" name="364" href="#364">364</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="365" href="#365">365</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="366" href="#366">366</a> 
-<a class="jxr_linenumber" name="367" href="#367">367</a>         batch.addTimestamp(FIRST_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="368" href="#368">368</a>         batch.addCommitRetry(SECOND_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="369" href="#369">369</a>         batch.addCommit(THIRD_ST, THIRD_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="370" href="#370">370</a>         batch.addAbort(FOURTH_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="371" href="#371">371</a>         batch.addCommit(FIFTH_ST, FIFTH_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="372" href="#372">372</a>         batch.addCommitRetry(SIXTH_ST, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="373" href="#373">373</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="374" href="#374">374</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="375" href="#375">375</a> 
-<a class="jxr_linenumber" name="376" href="#376">376</a>         <em class="jxr_comment">// Initial assertion</em>
-<a class="jxr_linenumber" name="377" href="#377">377</a>         assertEquals(batch.getNumEvents(), 6);
+<a class="jxr_linenumber" name="364" href="#364">364</a>     }
+<a class="jxr_linenumber" name="365" href="#365">365</a> 
+<a class="jxr_linenumber" name="366" href="#366">366</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="367" href="#367">367</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPanicPersistingEvents() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="368" href="#368">368</a> 
+<a class="jxr_linenumber" name="369" href="#369">369</a>         <em class="jxr_comment">// User the real panicker</em>
+<a class="jxr_linenumber" name="370" href="#370">370</a>         Panicker panicker = spy(<strong class="jxr_keyword">new</strong> RuntimeExceptionPanicker());
+<a class="jxr_linenumber" name="371" href="#371">371</a>         persistenceHandler = spy(<strong class="jxr_keyword">new</strong> PersistenceProcessorHandler(metrics,
+<a class="jxr_linenumber" name="372" href="#372">372</a>                                                                  <span class="jxr_string">"localhost:1234"</span>,
+<a class="jxr_linenumber" name="373" href="#373">373</a>                                                                  leaseManager,
+<a class="jxr_linenumber" name="374" href="#374">374</a>                                                                  commitTable,
+<a class="jxr_linenumber" name="375" href="#375">375</a>                                                                  replyProcessor,
+<a class="jxr_linenumber" name="376" href="#376">376</a>                                                                  retryProcessor,
+<a class="jxr_linenumber" name="377" href="#377">377</a>                                                                  panicker));
 <a class="jxr_linenumber" name="378" href="#378">378</a> 
-<a class="jxr_linenumber" name="379" href="#379">379</a>         <em class="jxr_comment">// Call process method</em>
-<a class="jxr_linenumber" name="380" href="#380">380</a>         persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="381" href="#381">381</a> 
-<a class="jxr_linenumber" name="382" href="#382">382</a>         verify(persistenceHandler, times(1)).flush(2); <em class="jxr_comment">// 2 commits to flush</em>
-<a class="jxr_linenumber" name="383" href="#383">383</a>         verify(persistenceHandler, times(1)).filterAndDissambiguateClientRetries(eq(batch));
-<a class="jxr_linenumber" name="384" href="#384">384</a>         verify(retryProcessor, times(1)).disambiguateRetryRequestHeuristically(eq(SECOND_ST), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="385" href="#385">385</a>         verify(replyProcessor, times(1)).manageResponsesBatch(eq(BATCH_SEQUENCE), eq(batch));
-<a class="jxr_linenumber" name="386" href="#386">386</a>         assertEquals(batch.getNumEvents(), 4);
-<a class="jxr_linenumber" name="387" href="#387">387</a>         assertEquals(batch.get(0).getStartTimestamp(), FIRST_ST);
-<a class="jxr_linenumber" name="388" href="#388">388</a>         assertEquals(batch.get(1).getStartTimestamp(), FIFTH_ST);
-<a class="jxr_linenumber" name="389" href="#389">389</a>         assertEquals(batch.get(1).getCommitTimestamp(), FIFTH_CT);
-<a class="jxr_linenumber" name="390" href="#390">390</a>         assertEquals(batch.get(2).getStartTimestamp(), THIRD_ST);
-<a class="jxr_linenumber" name="391" href="#391">391</a>         assertEquals(batch.get(2).getCommitTimestamp(), THIRD_CT);
-<a class="jxr_linenumber" name="392" href="#392">392</a>         assertEquals(batch.get(3).getStartTimestamp(), FOURTH_ST);
+<a class="jxr_linenumber" name="379" href="#379">379</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="380" href="#380">380</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="381" href="#381">381</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="382" href="#382">382</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="383" href="#383">383</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="384" href="#384">384</a> 
+<a class="jxr_linenumber" name="385" href="#385">385</a>         doThrow(IOException.<strong class="jxr_keyword">class</strong>).when(mockWriter).flush();
+<a class="jxr_linenumber" name="386" href="#386">386</a> 
+<a class="jxr_linenumber" name="387" href="#387">387</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="388" href="#388">388</a>             persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="389" href="#389">389</a>             fail();
+<a class="jxr_linenumber" name="390" href="#390">390</a>         } <strong class="jxr_keyword">catch</strong> (RuntimeException re) {
+<a class="jxr_linenumber" name="391" href="#391">391</a>             <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="392" href="#392">392</a>         }
 <a class="jxr_linenumber" name="393" href="#393">393</a> 
-<a class="jxr_linenumber" name="394" href="#394">394</a>     }
-<a class="jxr_linenumber" name="395" href="#395">395</a> 
-<a class="jxr_linenumber" name="396" href="#396">396</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="397" href="#397">397</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPanicPersistingEvents() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="394" href="#394">394</a>         verify(persistenceHandler, times(1)).flush(1);
+<a class="jxr_linenumber" name="395" href="#395">395</a>         verify(panicker, times(1)).panic(eq(<span class="jxr_string">"Error persisting commit batch"</span>), any(IOException.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="396" href="#396">396</a>         verify(persistenceHandler, never()).filterAndDissambiguateClientRetries(any(Batch.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="397" href="#397">397</a>         verify(replyProcessor, never()).manageResponsesBatch(anyLong(), any(Batch.<strong class="jxr_keyword">class</strong>));
 <a class="jxr_linenumber" name="398" href="#398">398</a> 
-<a class="jxr_linenumber" name="399" href="#399">399</a>         <em class="jxr_comment">// User the real panicker</em>
-<a class="jxr_linenumber" name="400" href="#400">400</a>         Panicker panicker = spy(<strong class="jxr_keyword">new</strong> RuntimeExceptionPanicker());
-<a class="jxr_linenumber" name="401" href="#401">401</a>         persistenceHandler = spy(<strong class="jxr_keyword">new</strong> PersistenceProcessorHandler(metrics,
-<a class="jxr_linenumber" name="402" href="#402">402</a>                                                                  <span class="jxr_string">"localhost:1234"</span>,
-<a class="jxr_linenumber" name="403" href="#403">403</a>                                                                  leaseManager,
-<a class="jxr_linenumber" name="404" href="#404">404</a>                                                                  commitTable,
-<a class="jxr_linenumber" name="405" href="#405">405</a>                                                                  replyProcessor,
-<a class="jxr_linenumber" name="406" href="#406">406</a>                                                                  retryProcessor,
-<a class="jxr_linenumber" name="407" href="#407">407</a>                                                                  panicker));
-<a class="jxr_linenumber" name="408" href="#408">408</a> 
-<a class="jxr_linenumber" name="409" href="#409">409</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="410" href="#410">410</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="411" href="#411">411</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="412" href="#412">412</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="413" href="#413">413</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="414" href="#414">414</a> 
-<a class="jxr_linenumber" name="415" href="#415">415</a>         doThrow(IOException.<strong class="jxr_keyword">class</strong>).when(mockWriter).flush();
-<a class="jxr_linenumber" name="416" href="#416">416</a> 
-<a class="jxr_linenumber" name="417" href="#417">417</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="418" href="#418">418</a>             persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="419" href="#419">419</a>             fail();
-<a class="jxr_linenumber" name="420" href="#420">420</a>         } <strong class="jxr_keyword">catch</strong> (RuntimeException re) {
-<a class="jxr_linenumber" name="421" href="#421">421</a>             <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="422" href="#422">422</a>         }
-<a class="jxr_linenumber" name="423" href="#423">423</a> 
-<a class="jxr_linenumber" name="424" href="#424">424</a>         verify(persistenceHandler, times(1)).flush(1);
-<a class="jxr_linenumber" name="425" href="#425">425</a>         verify(panicker, times(1)).panic(eq(<span class="jxr_string">"Error persisting commit batch"</span>), any(IOException.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="426" href="#426">426</a>         verify(persistenceHandler, never()).filterAndDissambiguateClientRetries(any(Batch.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="427" href="#427">427</a>         verify(replyProcessor, never()).manageResponsesBatch(anyLong(), any(Batch.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="428" href="#428">428</a> 
-<a class="jxr_linenumber" name="429" href="#429">429</a>     }
-<a class="jxr_linenumber" name="430" href="#430">430</a> 
-<a class="jxr_linenumber" name="431" href="#431">431</a>     @Test(timeOut = 10_000)
-<a class="jxr_linenumber" name="432" href="#432">432</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPanicBecauseMasterLosesMastership() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="433" href="#433">433</a> 
-<a class="jxr_linenumber" name="434" href="#434">434</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="435" href="#435">435</a>         <em class="jxr_comment">// 1) Test panic before flushing</em>
-<a class="jxr_linenumber" name="436" href="#436">436</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="437" href="#437">437</a> 
-<a class="jxr_linenumber" name="438" href="#438">438</a>         <em class="jxr_comment">// Simulate we lose mastership BEFORE flushing</em>
-<a class="jxr_linenumber" name="439" href="#439">439</a>         doReturn(false).when(leaseManager).stillInLeasePeriod();
-<a class="jxr_linenumber" name="440" href="#440">440</a> 
-<a class="jxr_linenumber" name="441" href="#441">441</a>         <em class="jxr_comment">// User the real panicker</em>
-<a class="jxr_linenumber" name="442" href="#442">442</a>         Panicker panicker = spy(<strong class="jxr_keyword">new</strong> RuntimeExceptionPanicker());
-<a class="jxr_linenumber" name="443" href="#443">443</a>         persistenceHandler = spy(<strong class="jxr_keyword">new</strong> PersistenceProcessorHandler(metrics,
-<a class="jxr_linenumber" name="444" href="#444">444</a>                                                                  <span class="jxr_string">"localhost:1234"</span>,
-<a class="jxr_linenumber" name="445" href="#445">445</a>                                                                  leaseManager,
-<a class="jxr_linenumber" name="446" href="#446">446</a>                                                                  commitTable,
-<a class="jxr_linenumber" name="447" href="#447">447</a>                                                                  replyProcessor,
-<a class="jxr_linenumber" name="448" href="#448">448</a>                                                                  retryProcessor,
-<a class="jxr_linenumber" name="449" href="#449">449</a>                                                                  panicker));
-<a class="jxr_linenumber" name="450" href="#450">450</a> 
-<a class="jxr_linenumber" name="451" href="#451">451</a>         <em class="jxr_comment">// Prepare test batch</em>
-<a class="jxr_linenumber" name="452" href="#452">452</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
-<a class="jxr_linenumber" name="453" href="#453">453</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="454" href="#454">454</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
-<a class="jxr_linenumber" name="455" href="#455">455</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
-<a class="jxr_linenumber" name="456" href="#456">456</a> 
-<a class="jxr_linenumber" name="457" href="#457">457</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="458" href="#458">458</a>             persistenceHandler.onEvent(batchEvent);
-<a class="jxr_linenumber" name="459" href="#459">459</a>             fail();
-<a class="jxr_linenumber" name="460" href="#460">460</a>         } <strong class="jxr_keyword">catch</strong> (RuntimeException re) {
-<a class="jxr_linenumber" name="461" href="#461">461</a>             <em class="jxr_comment">// Expected</em>
-<a class="jxr_linenumber" name="462" href="#462">462</a>         }
-<a class="jxr_linenumber" name="463" href="#463">463</a>         verify(persistenceHandler, times(1)).flush(eq(1));
-<a class="jxr_linenumber" name="464" href="#464">464</a>         verify(mockWriter, never()).flush();
-<a class="jxr_linenumber" name="465" href="#465">465</a>         verify(panicker, times(1)).panic(eq(<span class="jxr_string">"Replica localhost:1234 lost mastership whilst flushing data. Committing suicide"</span>), any(IOException.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="466" href="#466">466</a>         verify(persistenceHandler, never()).filterAndDissambiguateClientRetries(any(Batch.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="467" href="#467">467</a>         verify(replyProcessor, never()).manageResponsesBatch(anyLong(), any(Batch.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="468" href="#468">468</a> 
-<a class="jxr_linenumber" name="469" href="#469">469</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="470" href="#470">470</a>         <em class="jxr_comment">// 2) Test panic after flushing</em>
-<a class="jxr_linenumber" name="471" href="#471">471</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="472" href="#472">472</a> 
-<a class="jxr_linenumber" name="473" href="#473">473</a>         <em class="jxr_comment">// Simulate we lose mastership AFTER flushing</em>
-<a class="jxr_linenumber" name="474" href="#474">474</a>         doReturn(<strong class="jxr_keyword">true</strong>).doReturn(false).when(leaseManager).stillInLeasePeriod();
+<a class="jxr_linenumber" name="399" href="#399">399</a>     }
+<a class="jxr_linenumber" name="400" href="#400">400</a> 
+<a class="jxr_linenumber" name="401" href="#401">401</a>     @Test(timeOut = 10_000)
+<a class="jxr_linenumber" name="402" href="#402">402</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPanicBecauseMasterLosesMastership() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="403" href="#403">403</a> 
+<a class="jxr_linenumber" name="404" href="#404">404</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="405" href="#405">405</a>         <em class="jxr_comment">// 1) Test panic before flushing</em>
+<a class="jxr_linenumber" name="406" href="#406">406</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="407" href="#407">407</a> 
+<a class="jxr_linenumber" name="408" href="#408">408</a>         <em class="jxr_comment">// Simulate we lose mastership BEFORE flushing</em>
+<a class="jxr_linenumber" name="409" href="#409">409</a>         doReturn(false).when(leaseManager).stillInLeasePeriod();
+<a class="jxr_linenumber" name="410" href="#410">410</a> 
+<a class="jxr_linenumber" name="411" href="#411">411</a>         <em class="jxr_comment">// User the real panicker</em>
+<a class="jxr_linenumber" name="412" href="#412">412</a>         Panicker panicker = spy(<strong class="jxr_keyword">new</strong> RuntimeExceptionPanicker());
+<a class="jxr_linenumber" name="413" href="#413">413</a>         persistenceHandler = spy(<strong class="jxr_keyword">new</strong> PersistenceProcessorHandler(metrics,
+<a class="jxr_linenumber" name="414" href="#414">414</a>                                                                  <span class="jxr_string">"localhost:1234"</span>,
+<a class="jxr_linenumber" name="415" href="#415">415</a>                                                                  leaseManager,
+<a class="jxr_linenumber" name="416" href="#416">416</a>                                                                  commitTable,
+<a class="jxr_linenumber" name="417" href="#417">417</a>                                                                  replyProcessor,
+<a class="jxr_linenumber" name="418" href="#418">418</a>                                                                  retryProcessor,
+<a class="jxr_linenumber" name="419" href="#419">419</a>                                                                  panicker));
+<a class="jxr_linenumber" name="420" href="#420">420</a> 
+<a class="jxr_linenumber" name="421" href="#421">421</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="422" href="#422">422</a>         Batch batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="423" href="#423">423</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="424" href="#424">424</a>         PersistBatchEvent batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="425" href="#425">425</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="426" href="#426">426</a> 
+<a class="jxr_linenumber" name="427" href="#427">427</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="428" href="#428">428</a>             persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="429" href="#429">429</a>             fail();
+<a class="jxr_linenumber" name="430" href="#430">430</a>         } <strong class="jxr_keyword">catch</strong> (RuntimeException re) {
+<a class="jxr_linenumber" name="431" href="#431">431</a>             <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="432" href="#432">432</a>         }
+<a class="jxr_linenumber" name="433" href="#433">433</a>         verify(persistenceHandler, times(1)).flush(eq(1));
+<a class="jxr_linenumber" name="434" href="#434">434</a>         verify(mockWriter, never()).flush();
+<a class="jxr_linenumber" name="435" href="#435">435</a>         verify(panicker, times(1)).panic(eq(<span class="jxr_string">"Replica localhost:1234 lost mastership whilst flushing data. Committing suicide"</span>), any(IOException.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="436" href="#436">436</a>         verify(persistenceHandler, never()).filterAndDissambiguateClientRetries(any(Batch.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="437" href="#437">437</a>         verify(replyProcessor, never()).manageResponsesBatch(anyLong(), any(Batch.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="438" href="#438">438</a> 
+<a class="jxr_linenumber" name="439" href="#439">439</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="440" href="#440">440</a>         <em class="jxr_comment">// 2) Test panic after flushing</em>
+<a class="jxr_linenumber" name="441" href="#441">441</a>         <em class="jxr_comment">// ------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="442" href="#442">442</a> 
+<a class="jxr_linenumber" name="443" href="#443">443</a>         <em class="jxr_comment">// Simulate we lose mastership AFTER flushing</em>
+<a class="jxr_linenumber" name="444" href="#444">444</a>         doReturn(<strong class="jxr_keyword">true</strong>).doReturn(false).when(leaseManager).stillInLeasePeriod();
+<a class="jxr_linenumber" name="445" href="#445">445</a> 
+<a class="jxr_linenumber" name="446" href="#446">446</a>         <em class="jxr_comment">// User the real panicker</em>
+<a class="jxr_linenumber" name="447" href="#447">447</a>         panicker = spy(<strong class="jxr_keyword">new</strong> RuntimeExceptionPanicker());
+<a class="jxr_linenumber" name="448" href="#448">448</a>         persistenceHandler = spy(<strong class="jxr_keyword">new</strong> PersistenceProcessorHandler(metrics,
+<a class="jxr_linenumber" name="449" href="#449">449</a>                                                                  <span class="jxr_string">"localhost:1234"</span>,
+<a class="jxr_linenumber" name="450" href="#450">450</a>                                                                  leaseManager,
+<a class="jxr_linenumber" name="451" href="#451">451</a>                                                                  commitTable,
+<a class="jxr_linenumber" name="452" href="#452">452</a>                                                                  replyProcessor,
+<a class="jxr_linenumber" name="453" href="#453">453</a>                                                                  retryProcessor,
+<a class="jxr_linenumber" name="454" href="#454">454</a>                                                                  panicker));
+<a class="jxr_linenumber" name="455" href="#455">455</a> 
+<a class="jxr_linenumber" name="456" href="#456">456</a>         <em class="jxr_comment">// Prepare test batch</em>
+<a class="jxr_linenumber" name="457" href="#457">457</a>         batch = <strong class="jxr_keyword">new</strong> Batch(BATCH_ID, BATCH_SIZE);
+<a class="jxr_linenumber" name="458" href="#458">458</a>         batch.addCommit(FIRST_ST, FIRST_CT, <strong class="jxr_keyword">null</strong>, mock(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="459" href="#459">459</a>         batchEvent = <strong class="jxr_keyword">new</strong> PersistBatchEvent();
+<a class="jxr_linenumber" name="460" href="#460">460</a>         PersistBatchEvent.makePersistBatch(batchEvent, BATCH_SEQUENCE, batch);
+<a class="jxr_linenumber" name="461" href="#461">461</a> 
+<a class="jxr_linenumber" name="462" href="#462">462</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="463" href="#463">463</a>             persistenceHandler.onEvent(batchEvent);
+<a class="jxr_linenumber" name="464" href="#464">464</a>             fail();
+<a class="jxr_linenumber" name="465" href="#465">465</a>         } <strong class="jxr_keyword">catch</strong> (RuntimeException re) {
+<a class="jxr_linenumber" name="466" href="#466">466</a>             <em class="jxr_comment">// Expected</em>
+<a class="jxr_linenumber" name="467" href="#467">467</a>         }
+<a class="jxr_linenumber" name="468" href="#468">468</a>         verify(persistenceHandler, times(1)).flush(eq(1));
+<a class="jxr_linenumber" name="469" href="#469">469</a>         verify(mockWriter, times(1)).flush();
+<a class="jxr_linenumber" name="470" href="#470">470</a>         verify(panicker, times(1)).panic(eq(<span class="jxr_string">"Replica localhost:1234 lost mastership whilst flushing data. Committing suicide"</span>), any(IOException.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="471" href="#471">471</a>         verify(persistenceHandler, never()).filterAndDissambiguateClientRetries(any(Batch.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="472" href="#472">472</a>         verify(replyProcessor, never()).manageResponsesBatch(anyLong(), any(Batch.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="473" href="#473">473</a> 
+<a class=

<TRUNCATED>


[26/51] [partial] incubator-omid-site git commit: [wagon-git] commit to branch asf-site 9/20/18 10:47 AM

Posted by oh...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/TestRequestProcessor.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/TestRequestProcessor.html b/xref-test/org/apache/omid/tso/TestRequestProcessor.html
index 0691cef..13bdbcc 100644
--- a/xref-test/org/apache/omid/tso/TestRequestProcessor.html
+++ b/xref-test/org/apache/omid/tso/TestRequestProcessor.html
@@ -29,175 +29,189 @@
 <a class="jxr_linenumber" name="19" href="#19">19</a>  
 <a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Lists;
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.SettableFuture;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.jboss.netty.channel.Channel;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.mockito.ArgumentCaptor;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.eq;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.timeout;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TestRequestProcessor.html">TestRequestProcessor</a> {
-<a class="jxr_linenumber" name="44" href="#44">44</a>  
-<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestRequestProcessor.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="46" href="#46">46</a>  
-<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> CONFLICT_MAP_SIZE = 1000;
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> CONFLICT_MAP_ASSOCIATIVITY = 32;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.MetricsRegistry;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.metrics.NullMetricsProvider;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.omid.transaction.AbstractTransactionManager;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.jboss.netty.channel.Channel;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.mockito.ArgumentCaptor;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.BeforeMethod;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.testng.annotations.Test;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.any;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.anyLong;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Matchers.eq;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.doReturn;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.timeout;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.verify;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.testng.Assert.assertTrue;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/omid/tso/TestRequestProcessor.html">TestRequestProcessor</a> {
+<a class="jxr_linenumber" name="47" href="#47">47</a>  
+<a class="jxr_linenumber" name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(TestRequestProcessor.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> MetricsRegistry metrics = <strong class="jxr_keyword">new</strong> NullMetricsProvider();
-<a class="jxr_linenumber" name="51" href="#51">51</a>  
-<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> PersistenceProcessor persist;
-<a class="jxr_linenumber" name="53" href="#53">53</a>  
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> TSOStateManager stateManager;
-<a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>      <em class="jxr_comment">// Request processor under test</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> RequestProcessor requestProc;
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> CONFLICT_MAP_SIZE = 1000;
+<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> CONFLICT_MAP_ASSOCIATIVITY = 32;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> MetricsRegistry metrics = <strong class="jxr_keyword">new</strong> NullMetricsProvider();
+<a class="jxr_linenumber" name="54" href="#54">54</a>  
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> PersistenceProcessor persist;
+<a class="jxr_linenumber" name="56" href="#56">56</a>  
+<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> TSOStateManager stateManager;
 <a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>      @BeforeMethod
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeMethod() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <em class="jxr_comment">// Request processor under test</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> RequestProcessor requestProc;
 <a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>          <em class="jxr_comment">// Build the required scaffolding for the test</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>          MetricsRegistry metrics = <strong class="jxr_keyword">new</strong> NullMetricsProvider();
+<a class="jxr_linenumber" name="62" href="#62">62</a>      @BeforeMethod
+<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> beforeMethod() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>          TimestampOracleImpl timestampOracle =
-<a class="jxr_linenumber" name="66" href="#66">66</a>                  <strong class="jxr_keyword">new</strong> TimestampOracleImpl(metrics, <strong class="jxr_keyword">new</strong> TimestampOracleImpl.InMemoryTimestampStorage(), <strong class="jxr_keyword">new</strong> MockPanicker());
+<a class="jxr_linenumber" name="65" href="#65">65</a>          <em class="jxr_comment">// Build the required scaffolding for the test</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>          MetricsRegistry metrics = <strong class="jxr_keyword">new</strong> NullMetricsProvider();
 <a class="jxr_linenumber" name="67" href="#67">67</a>  
-<a class="jxr_linenumber" name="68" href="#68">68</a>          stateManager = <strong class="jxr_keyword">new</strong> TSOStateManagerImpl(timestampOracle);
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>          persist = mock(PersistenceProcessor.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="71" href="#71">71</a>          SettableFuture&lt;Void&gt; f = SettableFuture.create();
-<a class="jxr_linenumber" name="72" href="#72">72</a>          f.set(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="73" href="#73">73</a>          doReturn(f).when(persist).persistLowWatermark(any(Long.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>          TSOServerConfig config = <strong class="jxr_keyword">new</strong> TSOServerConfig();
-<a class="jxr_linenumber" name="76" href="#76">76</a>          config.setConflictMapSize(CONFLICT_MAP_SIZE);
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>          requestProc = <strong class="jxr_keyword">new</strong> RequestProcessorImpl(metrics, timestampOracle, persist, <strong class="jxr_keyword">new</strong> MockPanicker(), config);
-<a class="jxr_linenumber" name="79" href="#79">79</a>  
-<a class="jxr_linenumber" name="80" href="#80">80</a>          <em class="jxr_comment">// Initialize the state for the experiment</em>
-<a class="jxr_linenumber" name="81" href="#81">81</a>          stateManager.register(requestProc);
-<a class="jxr_linenumber" name="82" href="#82">82</a>          stateManager.initialize();
-<a class="jxr_linenumber" name="83" href="#83">83</a>  
-<a class="jxr_linenumber" name="84" href="#84">84</a>      }
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>      @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="87" href="#87">87</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestamp() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="68" href="#68">68</a>          TSOServerConfig config = <strong class="jxr_keyword">new</strong> TSOServerConfig();
+<a class="jxr_linenumber" name="69" href="#69">69</a>          config.setConflictMapSize(CONFLICT_MAP_SIZE);
+<a class="jxr_linenumber" name="70" href="#70">70</a>  
+<a class="jxr_linenumber" name="71" href="#71">71</a>          TimestampOracleImpl timestampOracle =
+<a class="jxr_linenumber" name="72" href="#72">72</a>                  <strong class="jxr_keyword">new</strong> TimestampOracleImpl(metrics, <strong class="jxr_keyword">new</strong> TimestampOracleImpl.InMemoryTimestampStorage(), <strong class="jxr_keyword">new</strong> MockPanicker());
+<a class="jxr_linenumber" name="73" href="#73">73</a>  
+<a class="jxr_linenumber" name="74" href="#74">74</a>          stateManager = <strong class="jxr_keyword">new</strong> TSOStateManagerImpl(timestampOracle);
+<a class="jxr_linenumber" name="75" href="#75">75</a>  
+<a class="jxr_linenumber" name="76" href="#76">76</a>          persist = mock(PersistenceProcessor.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="77" href="#77">77</a>          SettableFuture&lt;Void&gt; f = SettableFuture.create();
+<a class="jxr_linenumber" name="78" href="#78">78</a>          f.set(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="79" href="#79">79</a>          doReturn(f).when(persist).persistLowWatermark(any(Long.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="80" href="#80">80</a>  
+<a class="jxr_linenumber" name="81" href="#81">81</a>          requestProc = <strong class="jxr_keyword">new</strong> RequestProcessorImpl(metrics, timestampOracle, persist, <strong class="jxr_keyword">new</strong> MockPanicker(), config);
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>          <em class="jxr_comment">// Initialize the state for the experiment</em>
+<a class="jxr_linenumber" name="84" href="#84">84</a>          stateManager.register(requestProc);
+<a class="jxr_linenumber" name="85" href="#85">85</a>          stateManager.initialize();
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>      }
 <a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>          requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="90" href="#90">90</a>          ArgumentCaptor&lt;Long&gt; firstTScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="91" href="#91">91</a>          verify(persist, timeout(100).times(1)).addTimestampToBatch(
-<a class="jxr_linenumber" name="92" href="#92">92</a>                  firstTScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="93" href="#93">93</a>  
-<a class="jxr_linenumber" name="94" href="#94">94</a>          <strong class="jxr_keyword">long</strong> firstTS = firstTScapture.getValue();
-<a class="jxr_linenumber" name="95" href="#95">95</a>          <em class="jxr_comment">// verify that timestamps increase monotonically</em>
-<a class="jxr_linenumber" name="96" href="#96">96</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 100; i++) {
-<a class="jxr_linenumber" name="97" href="#97">97</a>              requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="98" href="#98">98</a>              verify(persist, timeout(100).times(1)).addTimestampToBatch(eq(firstTS++), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="99" href="#99">99</a>          }
-<a class="jxr_linenumber" name="100" href="#100">100</a> 
-<a class="jxr_linenumber" name="101" href="#101">101</a>     }
-<a class="jxr_linenumber" name="102" href="#102">102</a> 
-<a class="jxr_linenumber" name="103" href="#103">103</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommit() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="105" href="#105">105</a> 
-<a class="jxr_linenumber" name="106" href="#106">106</a>         requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="107" href="#107">107</a>         ArgumentCaptor&lt;Long&gt; TScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="108" href="#108">108</a>         verify(persist, timeout(100).times(1)).addTimestampToBatch(
-<a class="jxr_linenumber" name="109" href="#109">109</a>                 TScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">long</strong> firstTS = TScapture.getValue();
-<a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>         List&lt;Long&gt; writeSet = Lists.newArrayList(1L, 20L, 203L);
-<a class="jxr_linenumber" name="113" href="#113">113</a>         requestProc.commitRequest(firstTS - 1, writeSet, false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="114" href="#114">114</a>         verify(persist, timeout(100).times(1)).addAbortToBatch(eq(firstTS - 1), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="89" href="#89">89</a>      @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTimestamp() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>          requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="93" href="#93">93</a>          ArgumentCaptor&lt;Long&gt; firstTScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="94" href="#94">94</a>          verify(persist, timeout(100).times(1)).addTimestampToBatch(
+<a class="jxr_linenumber" name="95" href="#95">95</a>                  firstTScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="96" href="#96">96</a>  
+<a class="jxr_linenumber" name="97" href="#97">97</a>          <strong class="jxr_keyword">long</strong> firstTS = firstTScapture.getValue();
+<a class="jxr_linenumber" name="98" href="#98">98</a>          <em class="jxr_comment">// verify that timestamps increase monotonically</em>
+<a class="jxr_linenumber" name="99" href="#99">99</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 100; i++) {
+<a class="jxr_linenumber" name="100" href="#100">100</a>             requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="101" href="#101">101</a>             verify(persist, timeout(100).times(1)).addTimestampToBatch(eq(firstTS), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="102" href="#102">102</a>             firstTS += AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="103" href="#103">103</a>         }
+<a class="jxr_linenumber" name="104" href="#104">104</a> 
+<a class="jxr_linenumber" name="105" href="#105">105</a>     }
+<a class="jxr_linenumber" name="106" href="#106">106</a> 
+<a class="jxr_linenumber" name="107" href="#107">107</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommit() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="109" href="#109">109</a> 
+<a class="jxr_linenumber" name="110" href="#110">110</a>         requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="111" href="#111">111</a>         ArgumentCaptor&lt;Long&gt; TScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="112" href="#112">112</a>         verify(persist, timeout(100).times(1)).addTimestampToBatch(
+<a class="jxr_linenumber" name="113" href="#113">113</a>                 TScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="114" href="#114">114</a>         <strong class="jxr_keyword">long</strong> firstTS = TScapture.getValue();
 <a class="jxr_linenumber" name="115" href="#115">115</a> 
-<a class="jxr_linenumber" name="116" href="#116">116</a>         requestProc.commitRequest(firstTS, writeSet, false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="117" href="#117">117</a>         ArgumentCaptor&lt;Long&gt; commitTScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="118" href="#118">118</a> 
-<a class="jxr_linenumber" name="119" href="#119">119</a>         verify(persist, timeout(100).times(1)).addCommitToBatch(eq(firstTS), commitTScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="120" href="#120">120</a>         assertTrue(commitTScapture.getValue() &gt; firstTS, <span class="jxr_string">"Commit TS must be greater than start TS"</span>);
-<a class="jxr_linenumber" name="121" href="#121">121</a> 
-<a class="jxr_linenumber" name="122" href="#122">122</a>         <em class="jxr_comment">// test conflict</em>
-<a class="jxr_linenumber" name="123" href="#123">123</a>         requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="124" href="#124">124</a>         TScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="125" href="#125">125</a>         verify(persist, timeout(100).times(2)).addTimestampToBatch(
-<a class="jxr_linenumber" name="126" href="#126">126</a>                 TScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="127" href="#127">127</a>         <strong class="jxr_keyword">long</strong> secondTS = TScapture.getValue();
-<a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>         requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="130" href="#130">130</a>         TScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="131" href="#131">131</a>         verify(persist, timeout(100).times(3)).addTimestampToBatch(
-<a class="jxr_linenumber" name="132" href="#132">132</a>                 TScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">long</strong> thirdTS = TScapture.getValue();
-<a class="jxr_linenumber" name="134" href="#134">134</a> 
-<a class="jxr_linenumber" name="135" href="#135">135</a>         requestProc.commitRequest(thirdTS, writeSet, false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="136" href="#136">136</a>         verify(persist, timeout(100).times(1)).addCommitToBatch(eq(thirdTS), anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="137" href="#137">137</a>         requestProc.commitRequest(secondTS, writeSet, false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="138" href="#138">138</a>         verify(persist, timeout(100).times(1)).addAbortToBatch(eq(secondTS), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="139" href="#139">139</a> 
-<a class="jxr_linenumber" name="140" href="#140">140</a>     }
-<a class="jxr_linenumber" name="141" href="#141">141</a> 
-<a class="jxr_linenumber" name="142" href="#142">142</a>     @Test(timeOut = 30_000)
-<a class="jxr_linenumber" name="143" href="#143">143</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitRequestAbortsWhenResettingRequestProcessorState() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="144" href="#144">144</a> 
-<a class="jxr_linenumber" name="145" href="#145">145</a>         List&lt;Long&gt; writeSet = Collections.emptyList();
-<a class="jxr_linenumber" name="146" href="#146">146</a> 
-<a class="jxr_linenumber" name="147" href="#147">147</a>         <em class="jxr_comment">// Start a transaction...</em>
-<a class="jxr_linenumber" name="148" href="#148">148</a>         requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="149" href="#149">149</a>         ArgumentCaptor&lt;Long&gt; capturedTS = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="150" href="#150">150</a>         verify(persist, timeout(100).times(1)).addTimestampToBatch(capturedTS.capture(),
-<a class="jxr_linenumber" name="151" href="#151">151</a>                                                                    any(Channel.<strong class="jxr_keyword">class</strong>),
-<a class="jxr_linenumber" name="152" href="#152">152</a>                                                                    any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="153" href="#153">153</a>         <strong class="jxr_keyword">long</strong> startTS = capturedTS.getValue();
-<a class="jxr_linenumber" name="154" href="#154">154</a> 
-<a class="jxr_linenumber" name="155" href="#155">155</a>         <em class="jxr_comment">// ... simulate the reset of the RequestProcessor state (e.g. due to</em>
-<a class="jxr_linenumber" name="156" href="#156">156</a>         <em class="jxr_comment">// a change in mastership) and...</em>
-<a class="jxr_linenumber" name="157" href="#157">157</a>         stateManager.initialize();
+<a class="jxr_linenumber" name="116" href="#116">116</a>         List&lt;Long&gt; writeSet = Lists.newArrayList(1L, 20L, 203L);
+<a class="jxr_linenumber" name="117" href="#117">117</a>         requestProc.commitRequest(firstTS - AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN, writeSet, <strong class="jxr_keyword">new</strong> ArrayList&lt;Long&gt;(0), false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="118" href="#118">118</a>         verify(persist, timeout(100).times(1)).addAbortToBatch(eq(firstTS - AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="119" href="#119">119</a> 
+<a class="jxr_linenumber" name="120" href="#120">120</a>         requestProc.commitRequest(firstTS, writeSet, <strong class="jxr_keyword">new</strong> ArrayList&lt;Long&gt;(0), false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="121" href="#121">121</a>         ArgumentCaptor&lt;Long&gt; commitTScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="122" href="#122">122</a> 
+<a class="jxr_linenumber" name="123" href="#123">123</a>         verify(persist, timeout(100).times(1)).addCommitToBatch(eq(firstTS), commitTScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="124" href="#124">124</a>         assertTrue(commitTScapture.getValue() &gt; firstTS, <span class="jxr_string">"Commit TS must be greater than start TS"</span>);
+<a class="jxr_linenumber" name="125" href="#125">125</a> 
+<a class="jxr_linenumber" name="126" href="#126">126</a>         <em class="jxr_comment">// test conflict</em>
+<a class="jxr_linenumber" name="127" href="#127">127</a>         requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="128" href="#128">128</a>         TScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="129" href="#129">129</a>         verify(persist, timeout(100).times(2)).addTimestampToBatch(
+<a class="jxr_linenumber" name="130" href="#130">130</a>                 TScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="131" href="#131">131</a>         <strong class="jxr_keyword">long</strong> secondTS = TScapture.getValue();
+<a class="jxr_linenumber" name="132" href="#132">132</a> 
+<a class="jxr_linenumber" name="133" href="#133">133</a>         requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="134" href="#134">134</a>         TScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="135" href="#135">135</a>         verify(persist, timeout(100).times(3)).addTimestampToBatch(
+<a class="jxr_linenumber" name="136" href="#136">136</a>                 TScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="137" href="#137">137</a>         <strong class="jxr_keyword">long</strong> thirdTS = TScapture.getValue();
+<a class="jxr_linenumber" name="138" href="#138">138</a> 
+<a class="jxr_linenumber" name="139" href="#139">139</a>         requestProc.commitRequest(thirdTS, writeSet, <strong class="jxr_keyword">new</strong> ArrayList&lt;Long&gt;(0), false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="140" href="#140">140</a>         verify(persist, timeout(100).times(1)).addCommitToBatch(eq(thirdTS), anyLong(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="141" href="#141">141</a>         requestProc.commitRequest(secondTS, writeSet, <strong class="jxr_keyword">new</strong> ArrayList&lt;Long&gt;(0), false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="142" href="#142">142</a>         verify(persist, timeout(100).times(1)).addAbortToBatch(eq(secondTS), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
+<a class="jxr_linenumber" name="144" href="#144">144</a>     }
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="147" href="#147">147</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testFence() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="148" href="#148">148</a> 
+<a class="jxr_linenumber" name="149" href="#149">149</a>         requestProc.fenceRequest(666L, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="150" href="#150">150</a>         ArgumentCaptor&lt;Long&gt; firstTScapture = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="151" href="#151">151</a>         verify(persist, timeout(100).times(1)).addFenceToBatch(eq(666L),
+<a class="jxr_linenumber" name="152" href="#152">152</a>                 firstTScapture.capture(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="153" href="#153">153</a> 
+<a class="jxr_linenumber" name="154" href="#154">154</a>     }
+<a class="jxr_linenumber" name="155" href="#155">155</a> 
+<a class="jxr_linenumber" name="156" href="#156">156</a>     @Test(timeOut = 30_000)
+<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCommitRequestAbortsWhenResettingRequestProcessorState() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="158" href="#158">158</a> 
-<a class="jxr_linenumber" name="159" href="#159">159</a>         <em class="jxr_comment">// ...check that the transaction is aborted when trying to commit</em>
-<a class="jxr_linenumber" name="160" href="#160">160</a>         requestProc.commitRequest(startTS, writeSet, false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="161" href="#161">161</a>         verify(persist, timeout(100).times(1)).addAbortToBatch(eq(startTS), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="162" href="#162">162</a> 
-<a class="jxr_linenumber" name="163" href="#163">163</a>     }
-<a class="jxr_linenumber" name="164" href="#164">164</a> 
-<a class="jxr_linenumber" name="165" href="#165">165</a>     @Test(timeOut = 5_000)
-<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLowWatermarkIsStoredOnlyWhenACacheElementIsEvicted() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="167" href="#167">167</a> 
-<a class="jxr_linenumber" name="168" href="#168">168</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ANY_START_TS = 1;
-<a class="jxr_linenumber" name="169" href="#169">169</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> FIRST_COMMIT_TS_EVICTED = 1L;
-<a class="jxr_linenumber" name="170" href="#170">170</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> NEXT_COMMIT_TS_THAT_SHOULD_BE_EVICTED = 2L;
-<a class="jxr_linenumber" name="171" href="#171">171</a> 
-<a class="jxr_linenumber" name="172" href="#172">172</a>         <em class="jxr_comment">// Fill the cache to provoke a cache eviction</em>
-<a class="jxr_linenumber" name="173" href="#173">173</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> i = 0; i &lt; CONFLICT_MAP_SIZE + CONFLICT_MAP_ASSOCIATIVITY; i++) {
-<a class="jxr_linenumber" name="174" href="#174">174</a>             <strong class="jxr_keyword">long</strong> writeSetElementHash = i + 1; <em class="jxr_comment">// This is to match the assigned CT: K/V in cache = WS Element Hash/CT</em>
-<a class="jxr_linenumber" name="175" href="#175">175</a>             List&lt;Long&gt; writeSet = Lists.newArrayList(writeSetElementHash);
-<a class="jxr_linenumber" name="176" href="#176">176</a>             requestProc.commitRequest(ANY_START_TS, writeSet, false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
-<a class="jxr_linenumber" name="177" href="#177">177</a>         }
+<a class="jxr_linenumber" name="159" href="#159">159</a>         List&lt;Long&gt; writeSet = Collections.emptyList();
+<a class="jxr_linenumber" name="160" href="#160">160</a> 
+<a class="jxr_linenumber" name="161" href="#161">161</a>         <em class="jxr_comment">// Start a transaction...</em>
+<a class="jxr_linenumber" name="162" href="#162">162</a>         requestProc.timestampRequest(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="163" href="#163">163</a>         ArgumentCaptor&lt;Long&gt; capturedTS = ArgumentCaptor.forClass(Long.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="164" href="#164">164</a>         verify(persist, timeout(100).times(1)).addTimestampToBatch(capturedTS.capture(),
+<a class="jxr_linenumber" name="165" href="#165">165</a>                                                                    any(Channel.<strong class="jxr_keyword">class</strong>),
+<a class="jxr_linenumber" name="166" href="#166">166</a>                                                                    any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">long</strong> startTS = capturedTS.getValue();
+<a class="jxr_linenumber" name="168" href="#168">168</a> 
+<a class="jxr_linenumber" name="169" href="#169">169</a>         <em class="jxr_comment">// ... simulate the reset of the RequestProcessor state (e.g. due to</em>
+<a class="jxr_linenumber" name="170" href="#170">170</a>         <em class="jxr_comment">// a change in mastership) and...</em>
+<a class="jxr_linenumber" name="171" href="#171">171</a>         stateManager.initialize();
+<a class="jxr_linenumber" name="172" href="#172">172</a> 
+<a class="jxr_linenumber" name="173" href="#173">173</a>         <em class="jxr_comment">// ...check that the transaction is aborted when trying to commit</em>
+<a class="jxr_linenumber" name="174" href="#174">174</a>         requestProc.commitRequest(startTS, writeSet, <strong class="jxr_keyword">new</strong> ArrayList&lt;Long&gt;(0), false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="175" href="#175">175</a>         verify(persist, timeout(100).times(1)).addAbortToBatch(eq(startTS), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="176" href="#176">176</a> 
+<a class="jxr_linenumber" name="177" href="#177">177</a>     }
 <a class="jxr_linenumber" name="178" href="#178">178</a> 
-<a class="jxr_linenumber" name="179" href="#179">179</a>         Thread.currentThread().sleep(3000); <em class="jxr_comment">// Allow the Request processor to finish the request processing</em>
-<a class="jxr_linenumber" name="180" href="#180">180</a> 
-<a class="jxr_linenumber" name="181" href="#181">181</a>         <em class="jxr_comment">// Check that first time its called is on init</em>
-<a class="jxr_linenumber" name="182" href="#182">182</a>         verify(persist, timeout(100).times(1)).persistLowWatermark(eq(0L));
-<a class="jxr_linenumber" name="183" href="#183">183</a>         <em class="jxr_comment">// Then, check it is called when cache is full and the first element is evicted (should be a 1)</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a>         verify(persist, timeout(100).times(1)).persistLowWatermark(eq(FIRST_COMMIT_TS_EVICTED));
-<a class="jxr_linenumber" name="185" href="#185">185</a>         <em class="jxr_comment">// Finally it should never be called with the next element</em>
-<a class="jxr_linenumber" name="186" href="#186">186</a>         verify(persist, timeout(100).never()).persistLowWatermark(eq(NEXT_COMMIT_TS_THAT_SHOULD_BE_EVICTED));
-<a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>     }
-<a class="jxr_linenumber" name="189" href="#189">189</a> 
-<a class="jxr_linenumber" name="190" href="#190">190</a> }
+<a class="jxr_linenumber" name="179" href="#179">179</a>     @Test(timeOut = 5_000)
+<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLowWatermarkIsStoredOnlyWhenACacheElementIsEvicted() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ANY_START_TS = 1;
+<a class="jxr_linenumber" name="183" href="#183">183</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> FIRST_COMMIT_TS_EVICTED = AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="184" href="#184">184</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> NEXT_COMMIT_TS_THAT_SHOULD_BE_EVICTED = FIRST_COMMIT_TS_EVICTED + AbstractTransactionManager.MAX_CHECKPOINTS_PER_TXN;
+<a class="jxr_linenumber" name="185" href="#185">185</a> 
+<a class="jxr_linenumber" name="186" href="#186">186</a>         <em class="jxr_comment">// Fill the cache to provoke a cache eviction</em>
+<a class="jxr_linenumber" name="187" href="#187">187</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> i = 0; i &lt; CONFLICT_MAP_SIZE + CONFLICT_MAP_ASSOCIATIVITY; i++) {
+<a class="jxr_linenumber" name="188" href="#188">188</a>             <strong class="jxr_keyword">long</strong> writeSetElementHash = i + 1; <em class="jxr_comment">// This is to match the assigned CT: K/V in cache = WS Element Hash/CT</em>
+<a class="jxr_linenumber" name="189" href="#189">189</a>             List&lt;Long&gt; writeSet = Lists.newArrayList(writeSetElementHash);
+<a class="jxr_linenumber" name="190" href="#190">190</a>             requestProc.commitRequest(ANY_START_TS, writeSet, <strong class="jxr_keyword">new</strong> ArrayList&lt;Long&gt;(0), false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">new</strong> MonitoringContext(metrics));
+<a class="jxr_linenumber" name="191" href="#191">191</a>         }
+<a class="jxr_linenumber" name="192" href="#192">192</a> 
+<a class="jxr_linenumber" name="193" href="#193">193</a>         Thread.currentThread().sleep(3000); <em class="jxr_comment">// Allow the Request processor to finish the request processing</em>
+<a class="jxr_linenumber" name="194" href="#194">194</a> 
+<a class="jxr_linenumber" name="195" href="#195">195</a>         <em class="jxr_comment">// Check that first time its called is on init</em>
+<a class="jxr_linenumber" name="196" href="#196">196</a>         verify(persist, timeout(100).times(1)).persistLowWatermark(eq(0L));
+<a class="jxr_linenumber" name="197" href="#197">197</a>         <em class="jxr_comment">// Then, check it is called when cache is full and the first element is evicted (should be a AbstractTransactionManager.NUM_OF_CHECKPOINTS)</em>
+<a class="jxr_linenumber" name="198" href="#198">198</a>         verify(persist, timeout(100).times(1)).persistLowWatermark(eq(FIRST_COMMIT_TS_EVICTED));
+<a class="jxr_linenumber" name="199" href="#199">199</a>         <em class="jxr_comment">// Finally it should never be called with the next element</em>
+<a class="jxr_linenumber" name="200" href="#200">200</a>         verify(persist, timeout(100).never()).persistLowWatermark(eq(NEXT_COMMIT_TS_THAT_SHOULD_BE_EVICTED));
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>     }
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-omid-site/blob/6826ad03/xref-test/org/apache/omid/tso/TestTSOChannelHandlerNetty.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/omid/tso/TestTSOChannelHandlerNetty.html b/xref-test/org/apache/omid/tso/TestTSOChannelHandlerNetty.html
index a42bf8a..b2159ef 100644
--- a/xref-test/org/apache/omid/tso/TestTSOChannelHandlerNetty.html
+++ b/xref-test/org/apache/omid/tso/TestTSOChannelHandlerNetty.html
@@ -258,77 +258,95 @@
 <a class="jxr_linenumber" name="248" href="#248">248</a>         testWritingTimestampRequest(channel);
 <a class="jxr_linenumber" name="249" href="#249">249</a> 
 <a class="jxr_linenumber" name="250" href="#250">250</a>         testWritingCommitRequest(channel);
-<a class="jxr_linenumber" name="251" href="#251">251</a>     }
-<a class="jxr_linenumber" name="252" href="#252">252</a> 
-<a class="jxr_linenumber" name="253" href="#253">253</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testWritingTimestampRequest(Channel channel) <strong class="jxr_keyword">throws</strong> InterruptedException {
-<a class="jxr_linenumber" name="254" href="#254">254</a>         <em class="jxr_comment">// Reset mock</em>
-<a class="jxr_linenumber" name="255" href="#255">255</a>         reset(requestProcessor);
-<a class="jxr_linenumber" name="256" href="#256">256</a>         TSOProto.Request.Builder tsBuilder = TSOProto.Request.newBuilder();
-<a class="jxr_linenumber" name="257" href="#257">257</a>         TSOProto.TimestampRequest.Builder tsRequestBuilder = TSOProto.TimestampRequest.newBuilder();
-<a class="jxr_linenumber" name="258" href="#258">258</a>         tsBuilder.setTimestampRequest(tsRequestBuilder.build());
-<a class="jxr_linenumber" name="259" href="#259">259</a>         <em class="jxr_comment">// Write into the channel</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a>         channel.write(tsBuilder.build()).await();
-<a class="jxr_linenumber" name="261" href="#261">261</a>         verify(requestProcessor, timeout(100).times(1)).timestampRequest(any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="262" href="#262">262</a>         verify(requestProcessor, timeout(100).never())
-<a class="jxr_linenumber" name="263" href="#263">263</a>                 .commitRequest(anyLong(), anyCollectionOf(Long.<strong class="jxr_keyword">class</strong>), anyBoolean(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="264" href="#264">264</a>     }
-<a class="jxr_linenumber" name="265" href="#265">265</a> 
-<a class="jxr_linenumber" name="266" href="#266">266</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testWritingCommitRequest(Channel channel) <strong class="jxr_keyword">throws</strong> InterruptedException {
-<a class="jxr_linenumber" name="267" href="#267">267</a>         <em class="jxr_comment">// Reset mock</em>
-<a class="jxr_linenumber" name="268" href="#268">268</a>         reset(requestProcessor);
-<a class="jxr_linenumber" name="269" href="#269">269</a>         TSOProto.Request.Builder commitBuilder = TSOProto.Request.newBuilder();
-<a class="jxr_linenumber" name="270" href="#270">270</a>         TSOProto.CommitRequest.Builder commitRequestBuilder = TSOProto.CommitRequest.newBuilder();
-<a class="jxr_linenumber" name="271" href="#271">271</a>         commitRequestBuilder.setStartTimestamp(666);
-<a class="jxr_linenumber" name="272" href="#272">272</a>         commitRequestBuilder.addCellId(666);
-<a class="jxr_linenumber" name="273" href="#273">273</a>         commitBuilder.setCommitRequest(commitRequestBuilder.build());
-<a class="jxr_linenumber" name="274" href="#274">274</a>         TSOProto.Request r = commitBuilder.build();
-<a class="jxr_linenumber" name="275" href="#275">275</a>         assertTrue(r.hasCommitRequest());
-<a class="jxr_linenumber" name="276" href="#276">276</a>         <em class="jxr_comment">// Write into the channel</em>
-<a class="jxr_linenumber" name="277" href="#277">277</a>         channel.write(commitBuilder.build()).await();
-<a class="jxr_linenumber" name="278" href="#278">278</a>         verify(requestProcessor, timeout(100).never()).timestampRequest(any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="279" href="#279">279</a>         verify(requestProcessor, timeout(100).times(1))
-<a class="jxr_linenumber" name="280" href="#280">280</a>                 .commitRequest(eq(666L), anyCollectionOf(Long.<strong class="jxr_keyword">class</strong>), eq(false), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="281" href="#281">281</a>     }
-<a class="jxr_linenumber" name="282" href="#282">282</a> 
-<a class="jxr_linenumber" name="283" href="#283">283</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="284" href="#284">284</a>     <em class="jxr_comment">// Helper methods</em>
-<a class="jxr_linenumber" name="285" href="#285">285</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="286" href="#286">286</a> 
-<a class="jxr_linenumber" name="287" href="#287">287</a>     <strong class="jxr_keyword">private</strong> ClientBootstrap createNettyClientBootstrap() {
-<a class="jxr_linenumber" name="288" href="#288">288</a> 
-<a class="jxr_linenumber" name="289" href="#289">289</a>         ChannelFactory factory = <strong class="jxr_keyword">new</strong> NioClientSocketChannelFactory(
-<a class="jxr_linenumber" name="290" href="#290">290</a>                 Executors.newCachedThreadPool(
-<a class="jxr_linenumber" name="291" href="#291">291</a>                         <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"client-boss-%d"</span>).build()),
-<a class="jxr_linenumber" name="292" href="#292">292</a>                 Executors.newCachedThreadPool(
-<a class="jxr_linenumber" name="293" href="#293">293</a>                         <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"client-worker-%d"</span>).build()), 1);
-<a class="jxr_linenumber" name="294" href="#294">294</a>         <em class="jxr_comment">// Create the bootstrap</em>
-<a class="jxr_linenumber" name="295" href="#295">295</a>         ClientBootstrap bootstrap = <strong class="jxr_keyword">new</strong> ClientBootstrap(factory);
-<a class="jxr_linenumber" name="296" href="#296">296</a>         bootstrap.setOption(<span class="jxr_string">"tcpNoDelay"</span>, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="297" href="#297">297</a>         bootstrap.setOption(<span class="jxr_string">"keepAlive"</span>, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="298" href="#298">298</a>         bootstrap.setOption(<span class="jxr_string">"reuseAddress"</span>, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="299" href="#299">299</a>         bootstrap.setOption(<span class="jxr_string">"connectTimeoutMillis"</span>, 100);
-<a class="jxr_linenumber" name="300" href="#300">300</a>         ChannelPipeline pipeline = bootstrap.getPipeline();
-<a class="jxr_linenumber" name="301" href="#301">301</a>         pipeline.addLast(<span class="jxr_string">"lengthbaseddecoder"</span>, <strong class="jxr_keyword">new</strong> LengthFieldBasedFrameDecoder(8 * 1024, 0, 4, 0, 4));
-<a class="jxr_linenumber" name="302" href="#302">302</a>         pipeline.addLast(<span class="jxr_string">"lengthprepender"</span>, <strong class="jxr_keyword">new</strong> LengthFieldPrepender(4));
-<a class="jxr_linenumber" name="303" href="#303">303</a>         pipeline.addLast(<span class="jxr_string">"protobufdecoder"</span>, <strong class="jxr_keyword">new</strong> ProtobufDecoder(TSOProto.Response.getDefaultInstance()));
-<a class="jxr_linenumber" name="304" href="#304">304</a>         pipeline.addLast(<span class="jxr_string">"protobufencoder"</span>, <strong class="jxr_keyword">new</strong> ProtobufEncoder());
-<a class="jxr_linenumber" name="305" href="#305">305</a>         pipeline.addLast(<span class="jxr_string">"handler"</span>, <strong class="jxr_keyword">new</strong> SimpleChannelHandler() {
+<a class="jxr_linenumber" name="251" href="#251">251</a> 
+<a class="jxr_linenumber" name="252" href="#252">252</a>         testWritingFenceRequest(channel);
+<a class="jxr_linenumber" name="253" href="#253">253</a>     }
+<a class="jxr_linenumber" name="254" href="#254">254</a> 
+<a class="jxr_linenumber" name="255" href="#255">255</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testWritingTimestampRequest(Channel channel) <strong class="jxr_keyword">throws</strong> InterruptedException {
+<a class="jxr_linenumber" name="256" href="#256">256</a>         <em class="jxr_comment">// Reset mock</em>
+<a class="jxr_linenumber" name="257" href="#257">257</a>         reset(requestProcessor);
+<a class="jxr_linenumber" name="258" href="#258">258</a>         TSOProto.Request.Builder tsBuilder = TSOProto.Request.newBuilder();
+<a class="jxr_linenumber" name="259" href="#259">259</a>         TSOProto.TimestampRequest.Builder tsRequestBuilder = TSOProto.TimestampRequest.newBuilder();
+<a class="jxr_linenumber" name="260" href="#260">260</a>         tsBuilder.setTimestampRequest(tsRequestBuilder.build());
+<a class="jxr_linenumber" name="261" href="#261">261</a>         <em class="jxr_comment">// Write into the channel</em>
+<a class="jxr_linenumber" name="262" href="#262">262</a>         channel.write(tsBuilder.build()).await();
+<a class="jxr_linenumber" name="263" href="#263">263</a>         verify(requestProcessor, timeout(100).times(1)).timestampRequest(any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="264" href="#264">264</a>         verify(requestProcessor, timeout(100).never())
+<a class="jxr_linenumber" name="265" href="#265">265</a>                 .commitRequest(anyLong(), anyCollectionOf(Long.<strong class="jxr_keyword">class</strong>), anyCollectionOf(Long.<strong class="jxr_keyword">class</strong>), anyBoolean(), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="266" href="#266">266</a>     }
+<a class="jxr_linenumber" name="267" href="#267">267</a> 
+<a class="jxr_linenumber" name="268" href="#268">268</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testWritingCommitRequest(Channel channel) <strong class="jxr_keyword">throws</strong> InterruptedException {
+<a class="jxr_linenumber" name="269" href="#269">269</a>         <em class="jxr_comment">// Reset mock</em>
+<a class="jxr_linenumber" name="270" href="#270">270</a>         reset(requestProcessor);
+<a class="jxr_linenumber" name="271" href="#271">271</a>         TSOProto.Request.Builder commitBuilder = TSOProto.Request.newBuilder();
+<a class="jxr_linenumber" name="272" href="#272">272</a>         TSOProto.CommitRequest.Builder commitRequestBuilder = TSOProto.CommitRequest.newBuilder();
+<a class="jxr_linenumber" name="273" href="#273">273</a>         commitRequestBuilder.setStartTimestamp(666);
+<a class="jxr_linenumber" name="274" href="#274">274</a>         commitRequestBuilder.addCellId(666);
+<a class="jxr_linenumber" name="275" href="#275">275</a>         commitBuilder.setCommitRequest(commitRequestBuilder.build());
+<a class="jxr_linenumber" name="276" href="#276">276</a>         TSOProto.Request r = commitBuilder.build();
+<a class="jxr_linenumber" name="277" href="#277">277</a>         assertTrue(r.hasCommitRequest());
+<a class="jxr_linenumber" name="278" href="#278">278</a>         <em class="jxr_comment">// Write into the channel</em>
+<a class="jxr_linenumber" name="279" href="#279">279</a>         channel.write(commitBuilder.build()).await();
+<a class="jxr_linenumber" name="280" href="#280">280</a>         verify(requestProcessor, timeout(100).never()).timestampRequest(any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="281" href="#281">281</a>         verify(requestProcessor, timeout(100).times(1))
+<a class="jxr_linenumber" name="282" href="#282">282</a>                 .commitRequest(eq(666L), anyCollectionOf(Long.<strong class="jxr_keyword">class</strong>), anyCollectionOf(Long.<strong class="jxr_keyword">class</strong>), eq(false), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="283" href="#283">283</a>     }
+<a class="jxr_linenumber" name="284" href="#284">284</a> 
+<a class="jxr_linenumber" name="285" href="#285">285</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testWritingFenceRequest(Channel channel) <strong class="jxr_keyword">throws</strong> InterruptedException {
+<a class="jxr_linenumber" name="286" href="#286">286</a>         <em class="jxr_comment">// Reset mock</em>
+<a class="jxr_linenumber" name="287" href="#287">287</a>         reset(requestProcessor);
+<a class="jxr_linenumber" name="288" href="#288">288</a>         TSOProto.Request.Builder fenceBuilder = TSOProto.Request.newBuilder();
+<a class="jxr_linenumber" name="289" href="#289">289</a>         TSOProto.FenceRequest.Builder fenceRequestBuilder = TSOProto.FenceRequest.newBuilder();
+<a class="jxr_linenumber" name="290" href="#290">290</a>         fenceRequestBuilder.setTableId(666);
+<a class="jxr_linenumber" name="291" href="#291">291</a>         fenceBuilder.setFenceRequest(fenceRequestBuilder.build());
+<a class="jxr_linenumber" name="292" href="#292">292</a>         TSOProto.Request r = fenceBuilder.build();
+<a class="jxr_linenumber" name="293" href="#293">293</a>         assertTrue(r.hasFenceRequest());
+<a class="jxr_linenumber" name="294" href="#294">294</a>         <em class="jxr_comment">// Write into the channel</em>
+<a class="jxr_linenumber" name="295" href="#295">295</a>         channel.write(fenceBuilder.build()).await();
+<a class="jxr_linenumber" name="296" href="#296">296</a>         verify(requestProcessor, timeout(100).never()).timestampRequest(any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="297" href="#297">297</a>         verify(requestProcessor, timeout(100).times(1))
+<a class="jxr_linenumber" name="298" href="#298">298</a>                 .fenceRequest(eq(666L), any(Channel.<strong class="jxr_keyword">class</strong>), any(MonitoringContext.<strong class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="299" href="#299">299</a>     }
+<a class="jxr_linenumber" name="300" href="#300">300</a> 
+<a class="jxr_linenumber" name="301" href="#301">301</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="302" href="#302">302</a>     <em class="jxr_comment">// Helper methods</em>
+<a class="jxr_linenumber" name="303" href="#303">303</a>     <em class="jxr_comment">// ----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="304" href="#304">304</a> 
+<a class="jxr_linenumber" name="305" href="#305">305</a>     <strong class="jxr_keyword">private</strong> ClientBootstrap createNettyClientBootstrap() {
 <a class="jxr_linenumber" name="306" href="#306">306</a> 
-<a class="jxr_linenumber" name="307" href="#307">307</a>             @Override
-<a class="jxr_linenumber" name="308" href="#308">308</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) {
-<a class="jxr_linenumber" name="309" href="#309">309</a>                 LOG.info(<span class="jxr_string">"Channel {} connected"</span>, ctx.getChannel());
-<a class="jxr_linenumber" name="310" href="#310">310</a>             }
-<a class="jxr_linenumber" name="311" href="#311">311</a> 
-<a class="jxr_linenumber" name="312" href="#312">312</a>             @Override
-<a class="jxr_linenumber" name="313" href="#313">313</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="314" href="#314">314</a>                 LOG.error(<span class="jxr_string">"Error on channel {}"</span>, ctx.getChannel(), e.getCause());
-<a class="jxr_linenumber" name="315" href="#315">315</a>             }
-<a class="jxr_linenumber" name="316" href="#316">316</a> 
-<a class="jxr_linenumber" name="317" href="#317">317</a>         });
-<a class="jxr_linenumber" name="318" href="#318">318</a>         <strong class="jxr_keyword">return</strong> bootstrap;
-<a class="jxr_linenumber" name="319" href="#319">319</a>     }
-<a class="jxr_linenumber" name="320" href="#320">320</a> 
-<a class="jxr_linenumber" name="321" href="#321">321</a> }
+<a class="jxr_linenumber" name="307" href="#307">307</a>         ChannelFactory factory = <strong class="jxr_keyword">new</strong> NioClientSocketChannelFactory(
+<a class="jxr_linenumber" name="308" href="#308">308</a>                 Executors.newCachedThreadPool(
+<a class="jxr_linenumber" name="309" href="#309">309</a>                         <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"client-boss-%d"</span>).build()),
+<a class="jxr_linenumber" name="310" href="#310">310</a>                 Executors.newCachedThreadPool(
+<a class="jxr_linenumber" name="311" href="#311">311</a>                         <strong class="jxr_keyword">new</strong> ThreadFactoryBuilder().setNameFormat(<span class="jxr_string">"client-worker-%d"</span>).build()), 1);
+<a class="jxr_linenumber" name="312" href="#312">312</a>         <em class="jxr_comment">// Create the bootstrap</em>
+<a class="jxr_linenumber" name="313" href="#313">313</a>         ClientBootstrap bootstrap = <strong class="jxr_keyword">new</strong> ClientBootstrap(factory);
+<a class="jxr_linenumber" name="314" href="#314">314</a>         bootstrap.setOption(<span class="jxr_string">"tcpNoDelay"</span>, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="315" href="#315">315</a>         bootstrap.setOption(<span class="jxr_string">"keepAlive"</span>, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="316" href="#316">316</a>         bootstrap.setOption(<span class="jxr_string">"reuseAddress"</span>, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="317" href="#317">317</a>         bootstrap.setOption(<span class="jxr_string">"connectTimeoutMillis"</span>, 100);
+<a class="jxr_linenumber" name="318" href="#318">318</a>         ChannelPipeline pipeline = bootstrap.getPipeline();
+<a class="jxr_linenumber" name="319" href="#319">319</a>         pipeline.addLast(<span class="jxr_string">"lengthbaseddecoder"</span>, <strong class="jxr_keyword">new</strong> LengthFieldBasedFrameDecoder(8 * 1024, 0, 4, 0, 4));
+<a class="jxr_linenumber" name="320" href="#320">320</a>         pipeline.addLast(<span class="jxr_string">"lengthprepender"</span>, <strong class="jxr_keyword">new</strong> LengthFieldPrepender(4));
+<a class="jxr_linenumber" name="321" href="#321">321</a>         pipeline.addLast(<span class="jxr_string">"protobufdecoder"</span>, <strong class="jxr_keyword">new</strong> ProtobufDecoder(TSOProto.Response.getDefaultInstance()));
+<a class="jxr_linenumber" name="322" href="#322">322</a>         pipeline.addLast(<span class="jxr_string">"protobufencoder"</span>, <strong class="jxr_keyword">new</strong> ProtobufEncoder());
+<a class="jxr_linenumber" name="323" href="#323">323</a>         pipeline.addLast(<span class="jxr_string">"handler"</span>, <strong class="jxr_keyword">new</strong> SimpleChannelHandler() {
+<a class="jxr_linenumber" name="324" href="#324">324</a> 
+<a class="jxr_linenumber" name="325" href="#325">325</a>             @Override
+<a class="jxr_linenumber" name="326" href="#326">326</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) {
+<a class="jxr_linenumber" name="327" href="#327">327</a>                 LOG.info(<span class="jxr_string">"Channel {} connected"</span>, ctx.getChannel());
+<a class="jxr_linenumber" name="328" href="#328">328</a>             }
+<a class="jxr_linenumber" name="329" href="#329">329</a> 
+<a class="jxr_linenumber" name="330" href="#330">330</a>             @Override
+<a class="jxr_linenumber" name="331" href="#331">331</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="332" href="#332">332</a>                 LOG.error(<span class="jxr_string">"Error on channel {}"</span>, ctx.getChannel(), e.getCause());
+<a class="jxr_linenumber" name="333" href="#333">333</a>             }
+<a class="jxr_linenumber" name="334" href="#334">334</a> 
+<a class="jxr_linenumber" name="335" href="#335">335</a>         });
+<a class="jxr_linenumber" name="336" href="#336">336</a>         <strong class="jxr_keyword">return</strong> bootstrap;
+<a class="jxr_linenumber" name="337" href="#337">337</a>     }
+<a class="jxr_linenumber" name="338" href="#338">338</a> 
+<a class="jxr_linenumber" name="339" href="#339">339</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>