<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package: org.apache.hadoop.hbase, class: IntegrationTestMobCompaction, class: WriteData">
<meta name="generator" content="javadoc/SourceToHTMLConverter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body class="source-page">
<main role="main">
<div class="source-container">
<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
<span class="source-line-no">002</span><span id="line-2"> * Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="source-line-no">003</span><span id="line-3"> * or more contributor license agreements.  See the NOTICE file</span>
<span class="source-line-no">004</span><span id="line-4"> * distributed with this work for additional information</span>
<span class="source-line-no">005</span><span id="line-5"> * regarding copyright ownership.  The ASF licenses this file</span>
<span class="source-line-no">006</span><span id="line-6"> * to you under the Apache License, Version 2.0 (the</span>
<span class="source-line-no">007</span><span id="line-7"> * "License"); you may not use this file except in compliance</span>
<span class="source-line-no">008</span><span id="line-8"> * with the License.  You may obtain a copy of the License at</span>
<span class="source-line-no">009</span><span id="line-9"> *</span>
<span class="source-line-no">010</span><span id="line-10"> *     http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="source-line-no">011</span><span id="line-11"> *</span>
<span class="source-line-no">012</span><span id="line-12"> * Unless required by applicable law or agreed to in writing, software</span>
<span class="source-line-no">013</span><span id="line-13"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
<span class="source-line-no">014</span><span id="line-14"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<span class="source-line-no">015</span><span id="line-15"> * See the License for the specific language governing permissions and</span>
<span class="source-line-no">016</span><span id="line-16"> * limitations under the License.</span>
<span class="source-line-no">017</span><span id="line-17"> */</span>
<span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase;</span>
<span class="source-line-no">019</span><span id="line-19"></span>
<span class="source-line-no">020</span><span id="line-20">import static org.junit.Assert.assertEquals;</span>
<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertTrue;</span>
<span class="source-line-no">022</span><span id="line-22"></span>
<span class="source-line-no">023</span><span id="line-23">import java.io.IOException;</span>
<span class="source-line-no">024</span><span id="line-24">import java.nio.charset.StandardCharsets;</span>
<span class="source-line-no">025</span><span id="line-25">import java.util.Arrays;</span>
<span class="source-line-no">026</span><span id="line-26">import java.util.Set;</span>
<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.conf.Configuration;</span>
<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.fs.FileStatus;</span>
<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.fs.FileSystem;</span>
<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.fs.Path;</span>
<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.client.Admin;</span>
<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;</span>
<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;</span>
<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.client.Put;</span>
<span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.client.Result;</span>
<span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.client.ResultScanner;</span>
<span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.client.Table;</span>
<span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.client.TableDescriptor;</span>
<span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner;</span>
<span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.mob.FaultyMobStoreCompactor;</span>
<span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.mob.MobConstants;</span>
<span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.mob.MobFileCleanupUtil;</span>
<span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.mob.MobStoreEngine;</span>
<span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.mob.MobUtils;</span>
<span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.testclassification.IntegrationTests;</span>
<span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.util.Bytes;</span>
<span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.util.ToolRunner;</span>
<span class="source-line-no">048</span><span id="line-48">import org.junit.After;</span>
<span class="source-line-no">049</span><span id="line-49">import org.junit.Before;</span>
<span class="source-line-no">050</span><span id="line-50">import org.junit.Test;</span>
<span class="source-line-no">051</span><span id="line-51">import org.junit.experimental.categories.Category;</span>
<span class="source-line-no">052</span><span id="line-52">import org.slf4j.Logger;</span>
<span class="source-line-no">053</span><span id="line-53">import org.slf4j.LoggerFactory;</span>
<span class="source-line-no">054</span><span id="line-54"></span>
<span class="source-line-no">055</span><span id="line-55">import org.apache.hbase.thirdparty.com.google.common.base.MoreObjects;</span>
<span class="source-line-no">056</span><span id="line-56">import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;</span>
<span class="source-line-no">057</span><span id="line-57"></span>
<span class="source-line-no">058</span><span id="line-58">/**</span>
<span class="source-line-no">059</span><span id="line-59"> * An integration test to detect regressions in HBASE-22749. Test creates MOB-enabled table, and</span>
<span class="source-line-no">060</span><span id="line-60"> * runs in parallel, the following tasks: loads data, runs MOB compactions, runs MOB cleaning chore.</span>
<span class="source-line-no">061</span><span id="line-61"> * The failure injections into MOB compaction cycle is implemented via specific sub-class of</span>
<span class="source-line-no">062</span><span id="line-62"> * DefaultMobStoreCompactor - FaultyMobStoreCompactor. The probability of failure is controlled by</span>
<span class="source-line-no">063</span><span id="line-63"> * command-line argument 'failprob'.</span>
<span class="source-line-no">064</span><span id="line-64"> * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-22749"&gt;HBASE-22749&lt;/a&gt;</span>
<span class="source-line-no">065</span><span id="line-65"> *      &lt;p&gt;</span>
<span class="source-line-no">066</span><span id="line-66"> *      Sample usage:</span>
<span class="source-line-no">067</span><span id="line-67"> *</span>
<span class="source-line-no">068</span><span id="line-68"> *      &lt;pre&gt;</span>
<span class="source-line-no">069</span><span id="line-69"> * hbase org.apache.hadoop.hbase.IntegrationTestMobCompaction -Dservers=10 -Drows=1000000</span>
<span class="source-line-no">070</span><span id="line-70"> * -Dfailprob=0.2</span>
<span class="source-line-no">071</span><span id="line-71"> *      &lt;/pre&gt;</span>
<span class="source-line-no">072</span><span id="line-72"> */</span>
<span class="source-line-no">073</span><span id="line-73">@SuppressWarnings("deprecation")</span>
<span class="source-line-no">074</span><span id="line-74"></span>
<span class="source-line-no">075</span><span id="line-75">@Category(IntegrationTests.class)</span>
<span class="source-line-no">076</span><span id="line-76">public class IntegrationTestMobCompaction extends IntegrationTestBase {</span>
<span class="source-line-no">077</span><span id="line-77">  protected static final Logger LOG = LoggerFactory.getLogger(IntegrationTestMobCompaction.class);</span>
<span class="source-line-no">078</span><span id="line-78"></span>
<span class="source-line-no">079</span><span id="line-79">  protected static final String REGIONSERVER_COUNT_KEY = "servers";</span>
<span class="source-line-no">080</span><span id="line-80">  protected static final String ROWS_COUNT_KEY = "rows";</span>
<span class="source-line-no">081</span><span id="line-81">  protected static final String FAILURE_PROB_KEY = "failprob";</span>
<span class="source-line-no">082</span><span id="line-82"></span>
<span class="source-line-no">083</span><span id="line-83">  protected static final int DEFAULT_REGIONSERVER_COUNT = 3;</span>
<span class="source-line-no">084</span><span id="line-84">  protected static final int DEFAULT_ROWS_COUNT = 5000000;</span>
<span class="source-line-no">085</span><span id="line-85">  protected static final double DEFAULT_FAILURE_PROB = 0.1;</span>
<span class="source-line-no">086</span><span id="line-86"></span>
<span class="source-line-no">087</span><span id="line-87">  protected static int regionServerCount = DEFAULT_REGIONSERVER_COUNT;</span>
<span class="source-line-no">088</span><span id="line-88">  protected static long rowsToLoad = DEFAULT_ROWS_COUNT;</span>
<span class="source-line-no">089</span><span id="line-89">  protected static double failureProb = DEFAULT_FAILURE_PROB;</span>
<span class="source-line-no">090</span><span id="line-90"></span>
<span class="source-line-no">091</span><span id="line-91">  protected static String famStr = "f1";</span>
<span class="source-line-no">092</span><span id="line-92">  protected static byte[] fam = Bytes.toBytes(famStr);</span>
<span class="source-line-no">093</span><span id="line-93">  protected static byte[] qualifier = Bytes.toBytes("q1");</span>
<span class="source-line-no">094</span><span id="line-94">  protected static long mobLen = 10;</span>
<span class="source-line-no">095</span><span id="line-95">  protected static byte[] mobVal = Bytes</span>
<span class="source-line-no">096</span><span id="line-96">    .toBytes("01234567890123456789012345678901234567890123456789012345678901234567890123456789");</span>
<span class="source-line-no">097</span><span id="line-97"></span>
<span class="source-line-no">098</span><span id="line-98">  private static Configuration conf;</span>
<span class="source-line-no">099</span><span id="line-99">  private static TableDescriptor tableDescriptor;</span>
<span class="source-line-no">100</span><span id="line-100">  private static ColumnFamilyDescriptor familyDescriptor;</span>
<span class="source-line-no">101</span><span id="line-101">  private static Admin admin;</span>
<span class="source-line-no">102</span><span id="line-102">  private static Table table = null;</span>
<span class="source-line-no">103</span><span id="line-103"></span>
<span class="source-line-no">104</span><span id="line-104">  private static volatile boolean run = true;</span>
<span class="source-line-no">105</span><span id="line-105"></span>
<span class="source-line-no">106</span><span id="line-106">  @Override</span>
<span class="source-line-no">107</span><span id="line-107">  @Before</span>
<span class="source-line-no">108</span><span id="line-108">  public void setUp() throws Exception {</span>
<span class="source-line-no">109</span><span id="line-109">    util = getTestingUtil(getConf());</span>
<span class="source-line-no">110</span><span id="line-110">    conf = util.getConfiguration();</span>
<span class="source-line-no">111</span><span id="line-111">    // Initialize with test-specific configuration values</span>
<span class="source-line-no">112</span><span id="line-112">    initConf(conf);</span>
<span class="source-line-no">113</span><span id="line-113">    regionServerCount = conf.getInt(REGIONSERVER_COUNT_KEY, DEFAULT_REGIONSERVER_COUNT);</span>
<span class="source-line-no">114</span><span id="line-114">    LOG.info("Initializing cluster with {} region servers.", regionServerCount);</span>
<span class="source-line-no">115</span><span id="line-115">    util.initializeCluster(regionServerCount);</span>
<span class="source-line-no">116</span><span id="line-116">    admin = util.getAdmin();</span>
<span class="source-line-no">117</span><span id="line-117"></span>
<span class="source-line-no">118</span><span id="line-118">    createTestTable();</span>
<span class="source-line-no">119</span><span id="line-119"></span>
<span class="source-line-no">120</span><span id="line-120">    LOG.info("Cluster initialized and ready");</span>
<span class="source-line-no">121</span><span id="line-121">  }</span>
<span class="source-line-no">122</span><span id="line-122"></span>
<span class="source-line-no">123</span><span id="line-123">  private void createTestTable() throws IOException {</span>
<span class="source-line-no">124</span><span id="line-124">    // Create test table</span>
<span class="source-line-no">125</span><span id="line-125">    familyDescriptor = ColumnFamilyDescriptorBuilder.newBuilder(fam).setMobEnabled(true)</span>
<span class="source-line-no">126</span><span id="line-126">      .setMobThreshold(mobLen).setMaxVersions(1).build();</span>
<span class="source-line-no">127</span><span id="line-127">    tableDescriptor = util.createModifyableTableDescriptor("testMobCompactTable")</span>
<span class="source-line-no">128</span><span id="line-128">      .setColumnFamily(familyDescriptor).build();</span>
<span class="source-line-no">129</span><span id="line-129">    table = util.createTable(tableDescriptor, null);</span>
<span class="source-line-no">130</span><span id="line-130">  }</span>
<span class="source-line-no">131</span><span id="line-131"></span>
<span class="source-line-no">132</span><span id="line-132">  @After</span>
<span class="source-line-no">133</span><span id="line-133">  public void tearDown() throws IOException {</span>
<span class="source-line-no">134</span><span id="line-134">    LOG.info("Cleaning up after test.");</span>
<span class="source-line-no">135</span><span id="line-135">    if (util.isDistributedCluster()) {</span>
<span class="source-line-no">136</span><span id="line-136">      deleteTablesIfAny();</span>
<span class="source-line-no">137</span><span id="line-137">      // TODO</span>
<span class="source-line-no">138</span><span id="line-138">    }</span>
<span class="source-line-no">139</span><span id="line-139">    LOG.info("Restoring cluster.");</span>
<span class="source-line-no">140</span><span id="line-140">    util.restoreCluster();</span>
<span class="source-line-no">141</span><span id="line-141">    LOG.info("Cluster restored.");</span>
<span class="source-line-no">142</span><span id="line-142">  }</span>
<span class="source-line-no">143</span><span id="line-143"></span>
<span class="source-line-no">144</span><span id="line-144">  @Override</span>
<span class="source-line-no">145</span><span id="line-145">  public void setUpMonkey() throws Exception {</span>
<span class="source-line-no">146</span><span id="line-146">    // Sorry, no Monkey</span>
<span class="source-line-no">147</span><span id="line-147">    String msg = "Chaos monkey is not supported";</span>
<span class="source-line-no">148</span><span id="line-148">    LOG.warn(msg);</span>
<span class="source-line-no">149</span><span id="line-149">    throw new IOException(msg);</span>
<span class="source-line-no">150</span><span id="line-150">  }</span>
<span class="source-line-no">151</span><span id="line-151"></span>
<span class="source-line-no">152</span><span id="line-152">  private void deleteTablesIfAny() throws IOException {</span>
<span class="source-line-no">153</span><span id="line-153">    if (table != null) {</span>
<span class="source-line-no">154</span><span id="line-154">      util.deleteTableIfAny(table.getName());</span>
<span class="source-line-no">155</span><span id="line-155">    }</span>
<span class="source-line-no">156</span><span id="line-156">  }</span>
<span class="source-line-no">157</span><span id="line-157"></span>
<span class="source-line-no">158</span><span id="line-158">  @Override</span>
<span class="source-line-no">159</span><span id="line-159">  public void setUpCluster() throws Exception {</span>
<span class="source-line-no">160</span><span id="line-160">    util = getTestingUtil(getConf());</span>
<span class="source-line-no">161</span><span id="line-161">    LOG.debug("Initializing/checking cluster has {} servers", regionServerCount);</span>
<span class="source-line-no">162</span><span id="line-162">    util.initializeCluster(regionServerCount);</span>
<span class="source-line-no">163</span><span id="line-163">    LOG.debug("Done initializing/checking cluster");</span>
<span class="source-line-no">164</span><span id="line-164">  }</span>
<span class="source-line-no">165</span><span id="line-165"></span>
<span class="source-line-no">166</span><span id="line-166">  /** Returns status of CLI execution */</span>
<span class="source-line-no">167</span><span id="line-167">  @Override</span>
<span class="source-line-no">168</span><span id="line-168">  public int runTestFromCommandLine() throws Exception {</span>
<span class="source-line-no">169</span><span id="line-169">    testMobCompaction();</span>
<span class="source-line-no">170</span><span id="line-170">    return 0;</span>
<span class="source-line-no">171</span><span id="line-171">  }</span>
<span class="source-line-no">172</span><span id="line-172"></span>
<span class="source-line-no">173</span><span id="line-173">  @Override</span>
<span class="source-line-no">174</span><span id="line-174">  public TableName getTablename() {</span>
<span class="source-line-no">175</span><span id="line-175">    // That is only valid when Monkey is CALM (no monkey)</span>
<span class="source-line-no">176</span><span id="line-176">    return null;</span>
<span class="source-line-no">177</span><span id="line-177">  }</span>
<span class="source-line-no">178</span><span id="line-178"></span>
<span class="source-line-no">179</span><span id="line-179">  @Override</span>
<span class="source-line-no">180</span><span id="line-180">  protected Set&lt;String&gt; getColumnFamilies() {</span>
<span class="source-line-no">181</span><span id="line-181">    // That is only valid when Monkey is CALM (no monkey)</span>
<span class="source-line-no">182</span><span id="line-182">    return null;</span>
<span class="source-line-no">183</span><span id="line-183">  }</span>
<span class="source-line-no">184</span><span id="line-184"></span>
<span class="source-line-no">185</span><span id="line-185">  @Override</span>
<span class="source-line-no">186</span><span id="line-186">  protected void addOptions() {</span>
<span class="source-line-no">187</span><span id="line-187">    addOptWithArg(REGIONSERVER_COUNT_KEY,</span>
<span class="source-line-no">188</span><span id="line-188">      "Total number of region servers. Default: '" + DEFAULT_REGIONSERVER_COUNT + "'");</span>
<span class="source-line-no">189</span><span id="line-189">    addOptWithArg(ROWS_COUNT_KEY,</span>
<span class="source-line-no">190</span><span id="line-190">      "Total number of data rows to load. Default: '" + DEFAULT_ROWS_COUNT + "'");</span>
<span class="source-line-no">191</span><span id="line-191">    addOptWithArg(FAILURE_PROB_KEY,</span>
<span class="source-line-no">192</span><span id="line-192">      "Probability of a failure of a region MOB compaction request. Default: '"</span>
<span class="source-line-no">193</span><span id="line-193">        + DEFAULT_FAILURE_PROB + "'");</span>
<span class="source-line-no">194</span><span id="line-194">  }</span>
<span class="source-line-no">195</span><span id="line-195"></span>
<span class="source-line-no">196</span><span id="line-196">  @Override</span>
<span class="source-line-no">197</span><span id="line-197">  protected void processOptions(CommandLine cmd) {</span>
<span class="source-line-no">198</span><span id="line-198">    super.processOptions(cmd);</span>
<span class="source-line-no">199</span><span id="line-199"></span>
<span class="source-line-no">200</span><span id="line-200">    regionServerCount = Integer.parseInt(</span>
<span class="source-line-no">201</span><span id="line-201">      cmd.getOptionValue(REGIONSERVER_COUNT_KEY, Integer.toString(DEFAULT_REGIONSERVER_COUNT)));</span>
<span class="source-line-no">202</span><span id="line-202">    rowsToLoad =</span>
<span class="source-line-no">203</span><span id="line-203">      Long.parseLong(cmd.getOptionValue(ROWS_COUNT_KEY, Long.toString(DEFAULT_ROWS_COUNT)));</span>
<span class="source-line-no">204</span><span id="line-204">    failureProb = Double</span>
<span class="source-line-no">205</span><span id="line-205">      .parseDouble(cmd.getOptionValue(FAILURE_PROB_KEY, Double.toString(DEFAULT_FAILURE_PROB)));</span>
<span class="source-line-no">206</span><span id="line-206"></span>
<span class="source-line-no">207</span><span id="line-207">    LOG.info(</span>
<span class="source-line-no">208</span><span id="line-208">      MoreObjects.toStringHelper("Parsed Options").add(REGIONSERVER_COUNT_KEY, regionServerCount)</span>
<span class="source-line-no">209</span><span id="line-209">        .add(ROWS_COUNT_KEY, rowsToLoad).add(FAILURE_PROB_KEY, failureProb).toString());</span>
<span class="source-line-no">210</span><span id="line-210">  }</span>
<span class="source-line-no">211</span><span id="line-211"></span>
<span class="source-line-no">212</span><span id="line-212">  private static void initConf(Configuration conf) {</span>
<span class="source-line-no">213</span><span id="line-213"></span>
<span class="source-line-no">214</span><span id="line-214">    conf.setInt("hfile.format.version", 3);</span>
<span class="source-line-no">215</span><span id="line-215">    conf.setLong(TimeToLiveHFileCleaner.TTL_CONF_KEY, 0);</span>
<span class="source-line-no">216</span><span id="line-216">    conf.setInt("hbase.client.retries.number", 100);</span>
<span class="source-line-no">217</span><span id="line-217">    conf.setInt("hbase.hregion.max.filesize", 200000000);</span>
<span class="source-line-no">218</span><span id="line-218">    conf.setInt("hbase.hregion.memstore.flush.size", 800000);</span>
<span class="source-line-no">219</span><span id="line-219">    conf.setInt("hbase.hstore.blockingStoreFiles", 150);</span>
<span class="source-line-no">220</span><span id="line-220">    conf.setInt("hbase.hstore.compaction.throughput.lower.bound", 52428800);</span>
<span class="source-line-no">221</span><span id="line-221">    conf.setInt("hbase.hstore.compaction.throughput.higher.bound", 2 * 52428800);</span>
<span class="source-line-no">222</span><span id="line-222">    conf.setDouble("hbase.mob.compaction.fault.probability", failureProb);</span>
<span class="source-line-no">223</span><span id="line-223">    conf.set(MobStoreEngine.MOB_COMPACTOR_CLASS_KEY, FaultyMobStoreCompactor.class.getName());</span>
<span class="source-line-no">224</span><span id="line-224">    conf.setBoolean("hbase.table.sanity.checks", false);</span>
<span class="source-line-no">225</span><span id="line-225">    conf.setLong(MobConstants.MIN_AGE_TO_ARCHIVE_KEY, 20000);</span>
<span class="source-line-no">226</span><span id="line-226"></span>
<span class="source-line-no">227</span><span id="line-227">  }</span>
<span class="source-line-no">228</span><span id="line-228"></span>
<span class="source-line-no">229</span><span id="line-229">  static class MajorCompaction implements Runnable {</span>
<span class="source-line-no">230</span><span id="line-230"></span>
<span class="source-line-no">231</span><span id="line-231">    @Override</span>
<span class="source-line-no">232</span><span id="line-232">    public void run() {</span>
<span class="source-line-no">233</span><span id="line-233">      while (run) {</span>
<span class="source-line-no">234</span><span id="line-234">        try {</span>
<span class="source-line-no">235</span><span id="line-235">          admin.majorCompact(tableDescriptor.getTableName(), fam);</span>
<span class="source-line-no">236</span><span id="line-236">          Thread.sleep(120000);</span>
<span class="source-line-no">237</span><span id="line-237">        } catch (Exception e) {</span>
<span class="source-line-no">238</span><span id="line-238">          LOG.error("MOB Stress Test FAILED", e);</span>
<span class="source-line-no">239</span><span id="line-239">          System.exit(-1);</span>
<span class="source-line-no">240</span><span id="line-240">        }</span>
<span class="source-line-no">241</span><span id="line-241">      }</span>
<span class="source-line-no">242</span><span id="line-242">    }</span>
<span class="source-line-no">243</span><span id="line-243">  }</span>
<span class="source-line-no">244</span><span id="line-244"></span>
<span class="source-line-no">245</span><span id="line-245">  static class CleanMobAndArchive implements Runnable {</span>
<span class="source-line-no">246</span><span id="line-246"></span>
<span class="source-line-no">247</span><span id="line-247">    @Override</span>
<span class="source-line-no">248</span><span id="line-248">    public void run() {</span>
<span class="source-line-no">249</span><span id="line-249">      while (run) {</span>
<span class="source-line-no">250</span><span id="line-250">        try {</span>
<span class="source-line-no">251</span><span id="line-251">          LOG.info("MOB cleanup started ...");</span>
<span class="source-line-no">252</span><span id="line-252">          MobFileCleanupUtil.cleanupObsoleteMobFiles(conf, table.getName(), admin);</span>
<span class="source-line-no">253</span><span id="line-253">          LOG.info("MOB cleanup finished");</span>
<span class="source-line-no">254</span><span id="line-254"></span>
<span class="source-line-no">255</span><span id="line-255">          Thread.sleep(130000);</span>
<span class="source-line-no">256</span><span id="line-256">        } catch (Exception e) {</span>
<span class="source-line-no">257</span><span id="line-257">          LOG.warn("Exception in CleanMobAndArchive", e);</span>
<span class="source-line-no">258</span><span id="line-258">        }</span>
<span class="source-line-no">259</span><span id="line-259">      }</span>
<span class="source-line-no">260</span><span id="line-260">    }</span>
<span class="source-line-no">261</span><span id="line-261">  }</span>
<span class="source-line-no">262</span><span id="line-262"></span>
<span class="source-line-no">263</span><span id="line-263">  class WriteData implements Runnable {</span>
<span class="source-line-no">264</span><span id="line-264"></span>
<span class="source-line-no">265</span><span id="line-265">    private long rows = -1;</span>
<span class="source-line-no">266</span><span id="line-266"></span>
<span class="source-line-no">267</span><span id="line-267">    public WriteData(long rows) {</span>
<span class="source-line-no">268</span><span id="line-268">      this.rows = rows;</span>
<span class="source-line-no">269</span><span id="line-269">    }</span>
<span class="source-line-no">270</span><span id="line-270"></span>
<span class="source-line-no">271</span><span id="line-271">    @Override</span>
<span class="source-line-no">272</span><span id="line-272">    public void run() {</span>
<span class="source-line-no">273</span><span id="line-273">      try {</span>
<span class="source-line-no">274</span><span id="line-274"></span>
<span class="source-line-no">275</span><span id="line-275">        // BufferedMutator bm = admin.getConnection().getBufferedMutator(table.getName());</span>
<span class="source-line-no">276</span><span id="line-276">        // Put Operation</span>
<span class="source-line-no">277</span><span id="line-277">        for (int i = 0; i &lt; rows; i++) {</span>
<span class="source-line-no">278</span><span id="line-278">          Put p = new Put(Bytes.toBytes(i));</span>
<span class="source-line-no">279</span><span id="line-279">          p.addColumn(fam, qualifier, mobVal);</span>
<span class="source-line-no">280</span><span id="line-280">          table.put(p);</span>
<span class="source-line-no">281</span><span id="line-281"></span>
<span class="source-line-no">282</span><span id="line-282">          // bm.mutate(p);</span>
<span class="source-line-no">283</span><span id="line-283">          if (i % 10000 == 0) {</span>
<span class="source-line-no">284</span><span id="line-284">            LOG.info("LOADED=" + i);</span>
<span class="source-line-no">285</span><span id="line-285">            try {</span>
<span class="source-line-no">286</span><span id="line-286">              Thread.sleep(500);</span>
<span class="source-line-no">287</span><span id="line-287">            } catch (InterruptedException ee) {</span>
<span class="source-line-no">288</span><span id="line-288">              // Restore interrupt status</span>
<span class="source-line-no">289</span><span id="line-289">              Thread.currentThread().interrupt();</span>
<span class="source-line-no">290</span><span id="line-290">            }</span>
<span class="source-line-no">291</span><span id="line-291">          }</span>
<span class="source-line-no">292</span><span id="line-292">          if (i % 100000 == 0) {</span>
<span class="source-line-no">293</span><span id="line-293">            printStats(i);</span>
<span class="source-line-no">294</span><span id="line-294">          }</span>
<span class="source-line-no">295</span><span id="line-295">        }</span>
<span class="source-line-no">296</span><span id="line-296">        // bm.flush();</span>
<span class="source-line-no">297</span><span id="line-297">        admin.flush(table.getName());</span>
<span class="source-line-no">298</span><span id="line-298">        run = false;</span>
<span class="source-line-no">299</span><span id="line-299">      } catch (Exception e) {</span>
<span class="source-line-no">300</span><span id="line-300">        LOG.error("MOB Stress Test FAILED", e);</span>
<span class="source-line-no">301</span><span id="line-301">        System.exit(-1);</span>
<span class="source-line-no">302</span><span id="line-302">      }</span>
<span class="source-line-no">303</span><span id="line-303">    }</span>
<span class="source-line-no">304</span><span id="line-304">  }</span>
<span class="source-line-no">305</span><span id="line-305"></span>
<span class="source-line-no">306</span><span id="line-306">  @Test</span>
<span class="source-line-no">307</span><span id="line-307">  public void testMobCompaction() throws InterruptedException, IOException {</span>
<span class="source-line-no">308</span><span id="line-308"></span>
<span class="source-line-no">309</span><span id="line-309">    try {</span>
<span class="source-line-no">310</span><span id="line-310"></span>
<span class="source-line-no">311</span><span id="line-311">      Thread writeData = new Thread(new WriteData(rowsToLoad));</span>
<span class="source-line-no">312</span><span id="line-312">      writeData.start();</span>
<span class="source-line-no">313</span><span id="line-313"></span>
<span class="source-line-no">314</span><span id="line-314">      Thread majorcompact = new Thread(new MajorCompaction());</span>
<span class="source-line-no">315</span><span id="line-315">      majorcompact.start();</span>
<span class="source-line-no">316</span><span id="line-316"></span>
<span class="source-line-no">317</span><span id="line-317">      Thread cleaner = new Thread(new CleanMobAndArchive());</span>
<span class="source-line-no">318</span><span id="line-318">      cleaner.start();</span>
<span class="source-line-no">319</span><span id="line-319"></span>
<span class="source-line-no">320</span><span id="line-320">      while (run) {</span>
<span class="source-line-no">321</span><span id="line-321">        Thread.sleep(1000);</span>
<span class="source-line-no">322</span><span id="line-322">      }</span>
<span class="source-line-no">323</span><span id="line-323"></span>
<span class="source-line-no">324</span><span id="line-324">      getNumberOfMobFiles(conf, table.getName(), new String(fam, StandardCharsets.UTF_8));</span>
<span class="source-line-no">325</span><span id="line-325">      LOG.info("Waiting for write thread to finish ...");</span>
<span class="source-line-no">326</span><span id="line-326">      writeData.join();</span>
<span class="source-line-no">327</span><span id="line-327">      // Cleanup again</span>
<span class="source-line-no">328</span><span id="line-328">      MobFileCleanupUtil.cleanupObsoleteMobFiles(conf, table.getName(), admin);</span>
<span class="source-line-no">329</span><span id="line-329"></span>
<span class="source-line-no">330</span><span id="line-330">      if (util != null) {</span>
<span class="source-line-no">331</span><span id="line-331">        LOG.info("Archive cleaner started ...");</span>
<span class="source-line-no">332</span><span id="line-332">        // Call archive cleaner again</span>
<span class="source-line-no">333</span><span id="line-333">        util.getMiniHBaseCluster().getMaster().getHFileCleaner().choreForTesting();</span>
<span class="source-line-no">334</span><span id="line-334">        LOG.info("Archive cleaner finished");</span>
<span class="source-line-no">335</span><span id="line-335">      }</span>
<span class="source-line-no">336</span><span id="line-336"></span>
<span class="source-line-no">337</span><span id="line-337">      scanTable();</span>
<span class="source-line-no">338</span><span id="line-338"></span>
<span class="source-line-no">339</span><span id="line-339">    } finally {</span>
<span class="source-line-no">340</span><span id="line-340"></span>
<span class="source-line-no">341</span><span id="line-341">      admin.disableTable(tableDescriptor.getTableName());</span>
<span class="source-line-no">342</span><span id="line-342">      admin.deleteTable(tableDescriptor.getTableName());</span>
<span class="source-line-no">343</span><span id="line-343">    }</span>
<span class="source-line-no">344</span><span id="line-344">    LOG.info("MOB Stress Test finished OK");</span>
<span class="source-line-no">345</span><span id="line-345">    printStats(rowsToLoad);</span>
<span class="source-line-no">346</span><span id="line-346"></span>
<span class="source-line-no">347</span><span id="line-347">  }</span>
<span class="source-line-no">348</span><span id="line-348"></span>
<span class="source-line-no">349</span><span id="line-349">  private long getNumberOfMobFiles(Configuration conf, TableName tableName, String family)</span>
<span class="source-line-no">350</span><span id="line-350">    throws IOException {</span>
<span class="source-line-no">351</span><span id="line-351">    FileSystem fs = FileSystem.get(conf);</span>
<span class="source-line-no">352</span><span id="line-352">    Path dir = MobUtils.getMobFamilyPath(conf, tableName, family);</span>
<span class="source-line-no">353</span><span id="line-353">    FileStatus[] stat = fs.listStatus(dir);</span>
<span class="source-line-no">354</span><span id="line-354">    for (FileStatus st : stat) {</span>
<span class="source-line-no">355</span><span id="line-355">      LOG.debug("MOB Directory content: {}", st.getPath());</span>
<span class="source-line-no">356</span><span id="line-356">    }</span>
<span class="source-line-no">357</span><span id="line-357">    LOG.debug("MOB Directory content total files: {}", stat.length);</span>
<span class="source-line-no">358</span><span id="line-358"></span>
<span class="source-line-no">359</span><span id="line-359">    return stat.length;</span>
<span class="source-line-no">360</span><span id="line-360">  }</span>
<span class="source-line-no">361</span><span id="line-361"></span>
<span class="source-line-no">362</span><span id="line-362">  public void printStats(long loaded) {</span>
<span class="source-line-no">363</span><span id="line-363">    LOG.info("MOB Stress Test: loaded=" + loaded + " compactions="</span>
<span class="source-line-no">364</span><span id="line-364">      + FaultyMobStoreCompactor.totalCompactions.get() + " major="</span>
<span class="source-line-no">365</span><span id="line-365">      + FaultyMobStoreCompactor.totalMajorCompactions.get() + " mob="</span>
<span class="source-line-no">366</span><span id="line-366">      + FaultyMobStoreCompactor.mobCounter.get() + " injected failures="</span>
<span class="source-line-no">367</span><span id="line-367">      + FaultyMobStoreCompactor.totalFailures.get());</span>
<span class="source-line-no">368</span><span id="line-368">  }</span>
<span class="source-line-no">369</span><span id="line-369"></span>
<span class="source-line-no">370</span><span id="line-370">  private void scanTable() {</span>
<span class="source-line-no">371</span><span id="line-371">    try {</span>
<span class="source-line-no">372</span><span id="line-372"></span>
<span class="source-line-no">373</span><span id="line-373">      Result result;</span>
<span class="source-line-no">374</span><span id="line-374">      ResultScanner scanner = table.getScanner(fam);</span>
<span class="source-line-no">375</span><span id="line-375">      int counter = 0;</span>
<span class="source-line-no">376</span><span id="line-376">      while ((result = scanner.next()) != null) {</span>
<span class="source-line-no">377</span><span id="line-377">        assertTrue(Arrays.equals(result.getValue(fam, qualifier), mobVal));</span>
<span class="source-line-no">378</span><span id="line-378">        if (counter % 10000 == 0) {</span>
<span class="source-line-no">379</span><span id="line-379">          LOG.info("GET=" + counter);</span>
<span class="source-line-no">380</span><span id="line-380">        }</span>
<span class="source-line-no">381</span><span id="line-381">        counter++;</span>
<span class="source-line-no">382</span><span id="line-382">      }</span>
<span class="source-line-no">383</span><span id="line-383">      assertEquals(rowsToLoad, counter);</span>
<span class="source-line-no">384</span><span id="line-384">    } catch (Exception e) {</span>
<span class="source-line-no">385</span><span id="line-385">      e.printStackTrace();</span>
<span class="source-line-no">386</span><span id="line-386">      LOG.error("MOB Stress Test FAILED");</span>
<span class="source-line-no">387</span><span id="line-387">      if (util != null) {</span>
<span class="source-line-no">388</span><span id="line-388">        assertTrue(false);</span>
<span class="source-line-no">389</span><span id="line-389">      } else {</span>
<span class="source-line-no">390</span><span id="line-390">        System.exit(-1);</span>
<span class="source-line-no">391</span><span id="line-391">      }</span>
<span class="source-line-no">392</span><span id="line-392">    }</span>
<span class="source-line-no">393</span><span id="line-393">  }</span>
<span class="source-line-no">394</span><span id="line-394"></span>
<span class="source-line-no">395</span><span id="line-395">  public static void main(String[] args) throws Exception {</span>
<span class="source-line-no">396</span><span id="line-396">    Configuration conf = HBaseConfiguration.create();</span>
<span class="source-line-no">397</span><span id="line-397">    initConf(conf);</span>
<span class="source-line-no">398</span><span id="line-398">    IntegrationTestingUtility.setUseDistributedCluster(conf);</span>
<span class="source-line-no">399</span><span id="line-399">    int status = ToolRunner.run(conf, new IntegrationTestMobCompaction(), args);</span>
<span class="source-line-no">400</span><span id="line-400">    System.exit(status);</span>
<span class="source-line-no">401</span><span id="line-401">  }</span>
<span class="source-line-no">402</span><span id="line-402">}</span>




























































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