<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase;<a name="line.18"></a>
<span class="sourceLineNo">019</span><a name="line.19"></a>
<span class="sourceLineNo">020</span>import static org.junit.Assert.assertEquals;<a name="line.20"></a>
<span class="sourceLineNo">021</span><a name="line.21"></a>
<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import java.util.ArrayList;<a name="line.23"></a>
<span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
<span class="sourceLineNo">025</span>import java.util.Random;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import org.apache.hadoop.conf.Configuration;<a name="line.28"></a>
<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.Append;<a name="line.29"></a>
<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.client.CheckAndMutate;<a name="line.30"></a>
<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.31"></a>
<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.32"></a>
<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.33"></a>
<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.34"></a>
<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Get;<a name="line.35"></a>
<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.36"></a>
<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.Put;<a name="line.37"></a>
<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.38"></a>
<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.39"></a>
<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.40"></a>
<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Table;<a name="line.41"></a>
<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.42"></a>
<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.43"></a>
<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.ipc.DelegatingHBaseRpcController;<a name="line.44"></a>
<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.45"></a>
<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ipc.RpcControllerFactory;<a name="line.46"></a>
<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.47"></a>
<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.48"></a>
<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.49"></a>
<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.50"></a>
<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.51"></a>
<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.52"></a>
<span class="sourceLineNo">053</span>import org.junit.BeforeClass;<a name="line.53"></a>
<span class="sourceLineNo">054</span>import org.junit.ClassRule;<a name="line.54"></a>
<span class="sourceLineNo">055</span>import org.junit.Test;<a name="line.55"></a>
<span class="sourceLineNo">056</span>import org.junit.experimental.categories.Category;<a name="line.56"></a>
<span class="sourceLineNo">057</span><a name="line.57"></a>
<span class="sourceLineNo">058</span>import org.apache.hbase.thirdparty.com.google.protobuf.RpcController;<a name="line.58"></a>
<span class="sourceLineNo">059</span>import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException;<a name="line.59"></a>
<span class="sourceLineNo">060</span><a name="line.60"></a>
<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;<a name="line.61"></a>
<span class="sourceLineNo">062</span><a name="line.62"></a>
<span class="sourceLineNo">063</span>/**<a name="line.63"></a>
<span class="sourceLineNo">064</span> * Tests that one can implement their own RpcControllerFactory and expect it to successfully pass<a name="line.64"></a>
<span class="sourceLineNo">065</span> * custom priority values to the server for all HTable calls.<a name="line.65"></a>
<span class="sourceLineNo">066</span> */<a name="line.66"></a>
<span class="sourceLineNo">067</span>@Category({ ClientTests.class, MediumTests.class })<a name="line.67"></a>
<span class="sourceLineNo">068</span>public class TestCustomPriorityRpcControllerFactory {<a name="line.68"></a>
<span class="sourceLineNo">069</span><a name="line.69"></a>
<span class="sourceLineNo">070</span>  @ClassRule<a name="line.70"></a>
<span class="sourceLineNo">071</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.71"></a>
<span class="sourceLineNo">072</span>    HBaseClassTestRule.forClass(TestCustomPriorityRpcControllerFactory.class);<a name="line.72"></a>
<span class="sourceLineNo">073</span><a name="line.73"></a>
<span class="sourceLineNo">074</span>  private static final HBaseTestingUtil UTIL = new HBaseTestingUtil();<a name="line.74"></a>
<span class="sourceLineNo">075</span><a name="line.75"></a>
<span class="sourceLineNo">076</span>  private static final AtomicReference&lt;State&gt; STATE = new AtomicReference&lt;&gt;(State.SETUP);<a name="line.76"></a>
<span class="sourceLineNo">077</span>  private static final AtomicInteger EXPECTED_PRIORITY = new AtomicInteger();<a name="line.77"></a>
<span class="sourceLineNo">078</span><a name="line.78"></a>
<span class="sourceLineNo">079</span>  private enum State {<a name="line.79"></a>
<span class="sourceLineNo">080</span>    SETUP,<a name="line.80"></a>
<span class="sourceLineNo">081</span>    WAITING,<a name="line.81"></a>
<span class="sourceLineNo">082</span>    SUCCESS<a name="line.82"></a>
<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
<span class="sourceLineNo">084</span><a name="line.84"></a>
<span class="sourceLineNo">085</span>  private static final TableName TABLE_NAME = TableName.valueOf("Timeout");<a name="line.85"></a>
<span class="sourceLineNo">086</span>  private static final byte[] FAMILY = Bytes.toBytes("family");<a name="line.86"></a>
<span class="sourceLineNo">087</span>  private static final byte[] ROW = Bytes.toBytes("row");<a name="line.87"></a>
<span class="sourceLineNo">088</span>  private static final byte[] QUALIFIER = Bytes.toBytes("qualifier");<a name="line.88"></a>
<span class="sourceLineNo">089</span>  private static final byte[] VALUE = Bytes.toBytes(1L);<a name="line.89"></a>
<span class="sourceLineNo">090</span><a name="line.90"></a>
<span class="sourceLineNo">091</span>  private static final int MIN_CUSTOM_PRIORITY = 201;<a name="line.91"></a>
<span class="sourceLineNo">092</span><a name="line.92"></a>
<span class="sourceLineNo">093</span>  private static Connection CONN;<a name="line.93"></a>
<span class="sourceLineNo">094</span>  private static Table TABLE;<a name="line.94"></a>
<span class="sourceLineNo">095</span><a name="line.95"></a>
<span class="sourceLineNo">096</span>  @BeforeClass<a name="line.96"></a>
<span class="sourceLineNo">097</span>  public static void setUpClass() throws Exception {<a name="line.97"></a>
<span class="sourceLineNo">098</span>    // Set RegionServer class and use default values for other options.<a name="line.98"></a>
<span class="sourceLineNo">099</span>    UTIL.startMiniCluster(<a name="line.99"></a>
<span class="sourceLineNo">100</span>      StartTestingClusterOption.builder().rsClass(PriorityRegionServer.class).build());<a name="line.100"></a>
<span class="sourceLineNo">101</span>    TableDescriptor descriptor = TableDescriptorBuilder.newBuilder(TABLE_NAME)<a name="line.101"></a>
<span class="sourceLineNo">102</span>      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY)).build();<a name="line.102"></a>
<span class="sourceLineNo">103</span>    UTIL.getAdmin().createTable(descriptor);<a name="line.103"></a>
<span class="sourceLineNo">104</span><a name="line.104"></a>
<span class="sourceLineNo">105</span>    Configuration conf = new Configuration(UTIL.getConfiguration());<a name="line.105"></a>
<span class="sourceLineNo">106</span>    conf.setClass(RpcControllerFactory.CUSTOM_CONTROLLER_CONF_KEY,<a name="line.106"></a>
<span class="sourceLineNo">107</span>      PriorityRpcControllerFactory.class, RpcControllerFactory.class);<a name="line.107"></a>
<span class="sourceLineNo">108</span>    CONN = ConnectionFactory.createConnection(conf);<a name="line.108"></a>
<span class="sourceLineNo">109</span>    TABLE = CONN.getTable(TABLE_NAME);<a name="line.109"></a>
<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
<span class="sourceLineNo">111</span><a name="line.111"></a>
<span class="sourceLineNo">112</span>  @Test<a name="line.112"></a>
<span class="sourceLineNo">113</span>  public void tetGetPriority() throws Exception {<a name="line.113"></a>
<span class="sourceLineNo">114</span>    testForCall(new ThrowingCallable() {<a name="line.114"></a>
<span class="sourceLineNo">115</span>      @Override<a name="line.115"></a>
<span class="sourceLineNo">116</span>      public void call() throws IOException {<a name="line.116"></a>
<span class="sourceLineNo">117</span>        TABLE.get(new Get(ROW));<a name="line.117"></a>
<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
<span class="sourceLineNo">119</span>    });<a name="line.119"></a>
<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
<span class="sourceLineNo">121</span><a name="line.121"></a>
<span class="sourceLineNo">122</span>  @Test<a name="line.122"></a>
<span class="sourceLineNo">123</span>  public void testDeletePriority() throws Exception {<a name="line.123"></a>
<span class="sourceLineNo">124</span>    testForCall(new ThrowingCallable() {<a name="line.124"></a>
<span class="sourceLineNo">125</span>      @Override<a name="line.125"></a>
<span class="sourceLineNo">126</span>      public void call() throws IOException {<a name="line.126"></a>
<span class="sourceLineNo">127</span>        TABLE.delete(new Delete(ROW));<a name="line.127"></a>
<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
<span class="sourceLineNo">129</span>    });<a name="line.129"></a>
<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
<span class="sourceLineNo">131</span><a name="line.131"></a>
<span class="sourceLineNo">132</span>  @Test<a name="line.132"></a>
<span class="sourceLineNo">133</span>  public void testIncrementPriority() throws Exception {<a name="line.133"></a>
<span class="sourceLineNo">134</span>    testForCall(new ThrowingCallable() {<a name="line.134"></a>
<span class="sourceLineNo">135</span>      @Override<a name="line.135"></a>
<span class="sourceLineNo">136</span>      public void call() throws IOException {<a name="line.136"></a>
<span class="sourceLineNo">137</span>        TABLE.increment(new Increment(ROW).addColumn(FAMILY, QUALIFIER, 1));<a name="line.137"></a>
<span class="sourceLineNo">138</span>      }<a name="line.138"></a>
<span class="sourceLineNo">139</span>    });<a name="line.139"></a>
<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
<span class="sourceLineNo">141</span><a name="line.141"></a>
<span class="sourceLineNo">142</span>  @Test<a name="line.142"></a>
<span class="sourceLineNo">143</span>  public void testAppendPriority() throws Exception {<a name="line.143"></a>
<span class="sourceLineNo">144</span>    testForCall(new ThrowingCallable() {<a name="line.144"></a>
<span class="sourceLineNo">145</span>      @Override<a name="line.145"></a>
<span class="sourceLineNo">146</span>      public void call() throws IOException {<a name="line.146"></a>
<span class="sourceLineNo">147</span>        TABLE.append(new Append(ROW).addColumn(FAMILY, QUALIFIER, VALUE));<a name="line.147"></a>
<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
<span class="sourceLineNo">149</span>    });<a name="line.149"></a>
<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
<span class="sourceLineNo">151</span><a name="line.151"></a>
<span class="sourceLineNo">152</span>  @Test<a name="line.152"></a>
<span class="sourceLineNo">153</span>  public void testPutPriority() throws Exception {<a name="line.153"></a>
<span class="sourceLineNo">154</span>    testForCall(new ThrowingCallable() {<a name="line.154"></a>
<span class="sourceLineNo">155</span>      @Override<a name="line.155"></a>
<span class="sourceLineNo">156</span>      public void call() throws IOException {<a name="line.156"></a>
<span class="sourceLineNo">157</span>        Put put = new Put(ROW);<a name="line.157"></a>
<span class="sourceLineNo">158</span>        put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.158"></a>
<span class="sourceLineNo">159</span>        TABLE.put(put);<a name="line.159"></a>
<span class="sourceLineNo">160</span>      }<a name="line.160"></a>
<span class="sourceLineNo">161</span>    });<a name="line.161"></a>
<span class="sourceLineNo">162</span><a name="line.162"></a>
<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
<span class="sourceLineNo">164</span><a name="line.164"></a>
<span class="sourceLineNo">165</span>  @Test<a name="line.165"></a>
<span class="sourceLineNo">166</span>  public void testExistsPriority() throws Exception {<a name="line.166"></a>
<span class="sourceLineNo">167</span>    testForCall(new ThrowingCallable() {<a name="line.167"></a>
<span class="sourceLineNo">168</span>      @Override<a name="line.168"></a>
<span class="sourceLineNo">169</span>      public void call() throws IOException {<a name="line.169"></a>
<span class="sourceLineNo">170</span>        TABLE.exists(new Get(ROW));<a name="line.170"></a>
<span class="sourceLineNo">171</span>      }<a name="line.171"></a>
<span class="sourceLineNo">172</span>    });<a name="line.172"></a>
<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
<span class="sourceLineNo">174</span><a name="line.174"></a>
<span class="sourceLineNo">175</span>  @Test<a name="line.175"></a>
<span class="sourceLineNo">176</span>  public void testMutatePriority() throws Exception {<a name="line.176"></a>
<span class="sourceLineNo">177</span>    testForCall(new ThrowingCallable() {<a name="line.177"></a>
<span class="sourceLineNo">178</span>      @Override<a name="line.178"></a>
<span class="sourceLineNo">179</span>      public void call() throws IOException {<a name="line.179"></a>
<span class="sourceLineNo">180</span>        RowMutations mutation = new RowMutations(ROW);<a name="line.180"></a>
<span class="sourceLineNo">181</span>        mutation.add(new Delete(ROW));<a name="line.181"></a>
<span class="sourceLineNo">182</span>        mutation.add(new Put(ROW).addColumn(FAMILY, QUALIFIER, VALUE));<a name="line.182"></a>
<span class="sourceLineNo">183</span>        TABLE.mutateRow(mutation);<a name="line.183"></a>
<span class="sourceLineNo">184</span>      }<a name="line.184"></a>
<span class="sourceLineNo">185</span>    });<a name="line.185"></a>
<span class="sourceLineNo">186</span>  }<a name="line.186"></a>
<span class="sourceLineNo">187</span><a name="line.187"></a>
<span class="sourceLineNo">188</span>  @Test<a name="line.188"></a>
<span class="sourceLineNo">189</span>  public void testCheckAndMutatePriority() throws Exception {<a name="line.189"></a>
<span class="sourceLineNo">190</span>    testForCall(new ThrowingCallable() {<a name="line.190"></a>
<span class="sourceLineNo">191</span>      @Override<a name="line.191"></a>
<span class="sourceLineNo">192</span>      public void call() throws IOException {<a name="line.192"></a>
<span class="sourceLineNo">193</span>        RowMutations mutation = new RowMutations(ROW);<a name="line.193"></a>
<span class="sourceLineNo">194</span>        mutation.add(new Put(ROW).addColumn(FAMILY, QUALIFIER, VALUE));<a name="line.194"></a>
<span class="sourceLineNo">195</span>        TABLE.checkAndMutate(<a name="line.195"></a>
<span class="sourceLineNo">196</span>          CheckAndMutate.newBuilder(ROW).ifNotExists(FAMILY, QUALIFIER).build(mutation));<a name="line.196"></a>
<span class="sourceLineNo">197</span>      }<a name="line.197"></a>
<span class="sourceLineNo">198</span>    });<a name="line.198"></a>
<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
<span class="sourceLineNo">200</span><a name="line.200"></a>
<span class="sourceLineNo">201</span>  @Test<a name="line.201"></a>
<span class="sourceLineNo">202</span>  public void testMultiGetsPriority() throws Exception {<a name="line.202"></a>
<span class="sourceLineNo">203</span>    testForCall(new ThrowingCallable() {<a name="line.203"></a>
<span class="sourceLineNo">204</span>      @Override<a name="line.204"></a>
<span class="sourceLineNo">205</span>      public void call() throws Exception {<a name="line.205"></a>
<span class="sourceLineNo">206</span>        Get get1 = new Get(ROW);<a name="line.206"></a>
<span class="sourceLineNo">207</span>        get1.addColumn(FAMILY, QUALIFIER);<a name="line.207"></a>
<span class="sourceLineNo">208</span>        Get get2 = new Get(ROW);<a name="line.208"></a>
<span class="sourceLineNo">209</span>        get2.addColumn(FAMILY, QUALIFIER);<a name="line.209"></a>
<span class="sourceLineNo">210</span>        List&lt;Get&gt; gets = new ArrayList&lt;&gt;();<a name="line.210"></a>
<span class="sourceLineNo">211</span>        gets.add(get1);<a name="line.211"></a>
<span class="sourceLineNo">212</span>        gets.add(get2);<a name="line.212"></a>
<span class="sourceLineNo">213</span>        TABLE.batch(gets, new Object[2]);<a name="line.213"></a>
<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
<span class="sourceLineNo">215</span>    });<a name="line.215"></a>
<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
<span class="sourceLineNo">217</span><a name="line.217"></a>
<span class="sourceLineNo">218</span>  @Test<a name="line.218"></a>
<span class="sourceLineNo">219</span>  public void testMultiPutsPriority() throws Exception {<a name="line.219"></a>
<span class="sourceLineNo">220</span>    testForCall(new ThrowingCallable() {<a name="line.220"></a>
<span class="sourceLineNo">221</span>      @Override<a name="line.221"></a>
<span class="sourceLineNo">222</span>      public void call() throws Exception {<a name="line.222"></a>
<span class="sourceLineNo">223</span>        Put put1 = new Put(ROW);<a name="line.223"></a>
<span class="sourceLineNo">224</span>        put1.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.224"></a>
<span class="sourceLineNo">225</span>        Put put2 = new Put(ROW);<a name="line.225"></a>
<span class="sourceLineNo">226</span>        put2.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.226"></a>
<span class="sourceLineNo">227</span>        List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.227"></a>
<span class="sourceLineNo">228</span>        puts.add(put1);<a name="line.228"></a>
<span class="sourceLineNo">229</span>        puts.add(put2);<a name="line.229"></a>
<span class="sourceLineNo">230</span>        TABLE.batch(puts, new Object[2]);<a name="line.230"></a>
<span class="sourceLineNo">231</span>      }<a name="line.231"></a>
<span class="sourceLineNo">232</span>    });<a name="line.232"></a>
<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
<span class="sourceLineNo">234</span><a name="line.234"></a>
<span class="sourceLineNo">235</span>  @Test<a name="line.235"></a>
<span class="sourceLineNo">236</span>  public void testScanPriority() throws Exception {<a name="line.236"></a>
<span class="sourceLineNo">237</span>    testForCall(new ThrowingCallable() {<a name="line.237"></a>
<span class="sourceLineNo">238</span>      @Override<a name="line.238"></a>
<span class="sourceLineNo">239</span>      public void call() throws IOException {<a name="line.239"></a>
<span class="sourceLineNo">240</span>        ResultScanner scanner = TABLE.getScanner(new Scan());<a name="line.240"></a>
<span class="sourceLineNo">241</span>        scanner.next();<a name="line.241"></a>
<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
<span class="sourceLineNo">243</span>    });<a name="line.243"></a>
<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
<span class="sourceLineNo">245</span><a name="line.245"></a>
<span class="sourceLineNo">246</span>  private void testForCall(ThrowingCallable callable) throws Exception {<a name="line.246"></a>
<span class="sourceLineNo">247</span>    STATE.set(State.WAITING);<a name="line.247"></a>
<span class="sourceLineNo">248</span>    // set it higher than MIN_CUSTOM_PRIORITY so we can ignore calls for meta, setup, etc<a name="line.248"></a>
<span class="sourceLineNo">249</span>    EXPECTED_PRIORITY.set(new Random().nextInt(MIN_CUSTOM_PRIORITY) + MIN_CUSTOM_PRIORITY);<a name="line.249"></a>
<span class="sourceLineNo">250</span>    callable.call();<a name="line.250"></a>
<span class="sourceLineNo">251</span><a name="line.251"></a>
<span class="sourceLineNo">252</span>    assertEquals("Expected state to change to SUCCESS. Check for assertion error in logs",<a name="line.252"></a>
<span class="sourceLineNo">253</span>      STATE.get(), State.SUCCESS);<a name="line.253"></a>
<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
<span class="sourceLineNo">255</span><a name="line.255"></a>
<span class="sourceLineNo">256</span>  private interface ThrowingCallable {<a name="line.256"></a>
<span class="sourceLineNo">257</span>    void call() throws Exception;<a name="line.257"></a>
<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
<span class="sourceLineNo">259</span><a name="line.259"></a>
<span class="sourceLineNo">260</span>  public static class PriorityRegionServer<a name="line.260"></a>
<span class="sourceLineNo">261</span>    extends SingleProcessHBaseCluster.MiniHBaseClusterRegionServer {<a name="line.261"></a>
<span class="sourceLineNo">262</span>    public PriorityRegionServer(Configuration conf) throws IOException, InterruptedException {<a name="line.262"></a>
<span class="sourceLineNo">263</span>      super(conf);<a name="line.263"></a>
<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
<span class="sourceLineNo">265</span><a name="line.265"></a>
<span class="sourceLineNo">266</span>    @Override<a name="line.266"></a>
<span class="sourceLineNo">267</span>    protected RSRpcServices createRpcServices() throws IOException {<a name="line.267"></a>
<span class="sourceLineNo">268</span>      return new PriorityRpcServices(this);<a name="line.268"></a>
<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
<span class="sourceLineNo">271</span><a name="line.271"></a>
<span class="sourceLineNo">272</span>  public static class PriorityRpcControllerFactory extends RpcControllerFactory {<a name="line.272"></a>
<span class="sourceLineNo">273</span><a name="line.273"></a>
<span class="sourceLineNo">274</span>    public PriorityRpcControllerFactory(Configuration conf) {<a name="line.274"></a>
<span class="sourceLineNo">275</span>      super(conf);<a name="line.275"></a>
<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
<span class="sourceLineNo">277</span><a name="line.277"></a>
<span class="sourceLineNo">278</span>    @Override<a name="line.278"></a>
<span class="sourceLineNo">279</span>    public HBaseRpcController newController() {<a name="line.279"></a>
<span class="sourceLineNo">280</span>      return new PriorityController(EXPECTED_PRIORITY.get(), super.newController());<a name="line.280"></a>
<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
<span class="sourceLineNo">282</span><a name="line.282"></a>
<span class="sourceLineNo">283</span>    @Override<a name="line.283"></a>
<span class="sourceLineNo">284</span>    public HBaseRpcController newController(CellScanner cellScanner) {<a name="line.284"></a>
<span class="sourceLineNo">285</span>      return new PriorityController(EXPECTED_PRIORITY.get(), super.newController(cellScanner));<a name="line.285"></a>
<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
<span class="sourceLineNo">287</span><a name="line.287"></a>
<span class="sourceLineNo">288</span>    @Override<a name="line.288"></a>
<span class="sourceLineNo">289</span>    public HBaseRpcController newController(List&lt;CellScannable&gt; cellIterables) {<a name="line.289"></a>
<span class="sourceLineNo">290</span>      return new PriorityController(EXPECTED_PRIORITY.get(), super.newController(cellIterables));<a name="line.290"></a>
<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
<span class="sourceLineNo">293</span><a name="line.293"></a>
<span class="sourceLineNo">294</span>  private static class PriorityController extends DelegatingHBaseRpcController {<a name="line.294"></a>
<span class="sourceLineNo">295</span>    private final int priority;<a name="line.295"></a>
<span class="sourceLineNo">296</span><a name="line.296"></a>
<span class="sourceLineNo">297</span>    public PriorityController(int priority, HBaseRpcController controller) {<a name="line.297"></a>
<span class="sourceLineNo">298</span>      super(controller);<a name="line.298"></a>
<span class="sourceLineNo">299</span>      this.priority = priority;<a name="line.299"></a>
<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
<span class="sourceLineNo">301</span><a name="line.301"></a>
<span class="sourceLineNo">302</span>    @Override<a name="line.302"></a>
<span class="sourceLineNo">303</span>    public int getPriority() {<a name="line.303"></a>
<span class="sourceLineNo">304</span>      return priority;<a name="line.304"></a>
<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
<span class="sourceLineNo">307</span><a name="line.307"></a>
<span class="sourceLineNo">308</span>  public static class PriorityRpcServices extends RSRpcServices {<a name="line.308"></a>
<span class="sourceLineNo">309</span>    PriorityRpcServices(HRegionServer rs) throws IOException {<a name="line.309"></a>
<span class="sourceLineNo">310</span>      super(rs);<a name="line.310"></a>
<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
<span class="sourceLineNo">312</span><a name="line.312"></a>
<span class="sourceLineNo">313</span>    private void checkPriorityIfWaiting() {<a name="line.313"></a>
<span class="sourceLineNo">314</span>      if (STATE.get() == State.WAITING) {<a name="line.314"></a>
<span class="sourceLineNo">315</span>        int priority = RpcServer.getCurrentCall().get().getPriority();<a name="line.315"></a>
<span class="sourceLineNo">316</span>        if (priority &lt; MIN_CUSTOM_PRIORITY) {<a name="line.316"></a>
<span class="sourceLineNo">317</span>          return;<a name="line.317"></a>
<span class="sourceLineNo">318</span>        }<a name="line.318"></a>
<span class="sourceLineNo">319</span>        assertEquals(EXPECTED_PRIORITY.get(), priority);<a name="line.319"></a>
<span class="sourceLineNo">320</span>        STATE.set(State.SUCCESS);<a name="line.320"></a>
<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
<span class="sourceLineNo">322</span>    }<a name="line.322"></a>
<span class="sourceLineNo">323</span><a name="line.323"></a>
<span class="sourceLineNo">324</span>    @Override<a name="line.324"></a>
<span class="sourceLineNo">325</span>    public ClientProtos.GetResponse get(RpcController controller, ClientProtos.GetRequest request)<a name="line.325"></a>
<span class="sourceLineNo">326</span>      throws ServiceException {<a name="line.326"></a>
<span class="sourceLineNo">327</span>      checkPriorityIfWaiting();<a name="line.327"></a>
<span class="sourceLineNo">328</span>      return super.get(controller, request);<a name="line.328"></a>
<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
<span class="sourceLineNo">330</span><a name="line.330"></a>
<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
<span class="sourceLineNo">332</span>    public ClientProtos.MutateResponse mutate(RpcController rpcc,<a name="line.332"></a>
<span class="sourceLineNo">333</span>      ClientProtos.MutateRequest request) throws ServiceException {<a name="line.333"></a>
<span class="sourceLineNo">334</span>      checkPriorityIfWaiting();<a name="line.334"></a>
<span class="sourceLineNo">335</span>      return super.mutate(rpcc, request);<a name="line.335"></a>
<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
<span class="sourceLineNo">337</span><a name="line.337"></a>
<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
<span class="sourceLineNo">339</span>    public ClientProtos.ScanResponse scan(RpcController controller,<a name="line.339"></a>
<span class="sourceLineNo">340</span>      ClientProtos.ScanRequest request) throws ServiceException {<a name="line.340"></a>
<span class="sourceLineNo">341</span>      checkPriorityIfWaiting();<a name="line.341"></a>
<span class="sourceLineNo">342</span>      return super.scan(controller, request);<a name="line.342"></a>
<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
<span class="sourceLineNo">344</span><a name="line.344"></a>
<span class="sourceLineNo">345</span>    @Override<a name="line.345"></a>
<span class="sourceLineNo">346</span>    public ClientProtos.MultiResponse multi(RpcController rpcc, ClientProtos.MultiRequest request)<a name="line.346"></a>
<span class="sourceLineNo">347</span>      throws ServiceException {<a name="line.347"></a>
<span class="sourceLineNo">348</span>      checkPriorityIfWaiting();<a name="line.348"></a>
<span class="sourceLineNo">349</span>      return super.multi(rpcc, request);<a name="line.349"></a>
<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
<span class="sourceLineNo">352</span>}<a name="line.352"></a>




























































</pre>
</div>
</body>
</html>
