| <!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.client, interface: Admin"> |
| <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.client;</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.apache.hadoop.hbase.util.FutureUtils.get;</span> |
| <span class="source-line-no">021</span><span id="line-21"></span> |
| <span class="source-line-no">022</span><span id="line-22">import java.io.Closeable;</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.util.Collection;</span> |
| <span class="source-line-no">025</span><span id="line-25">import java.util.EnumSet;</span> |
| <span class="source-line-no">026</span><span id="line-26">import java.util.HashMap;</span> |
| <span class="source-line-no">027</span><span id="line-27">import java.util.List;</span> |
| <span class="source-line-no">028</span><span id="line-28">import java.util.Map;</span> |
| <span class="source-line-no">029</span><span id="line-29">import java.util.Set;</span> |
| <span class="source-line-no">030</span><span id="line-30">import java.util.concurrent.Future;</span> |
| <span class="source-line-no">031</span><span id="line-31">import java.util.concurrent.TimeUnit;</span> |
| <span class="source-line-no">032</span><span id="line-32">import java.util.regex.Pattern;</span> |
| <span class="source-line-no">033</span><span id="line-33">import java.util.stream.Collectors;</span> |
| <span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.conf.Configuration;</span> |
| <span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.Abortable;</span> |
| <span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.CacheEvictionStats;</span> |
| <span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.ClusterMetrics;</span> |
| <span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.ClusterMetrics.Option;</span> |
| <span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.NamespaceDescriptor;</span> |
| <span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.NamespaceNotFoundException;</span> |
| <span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.RegionMetrics;</span> |
| <span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.ServerName;</span> |
| <span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.TableExistsException;</span> |
| <span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.TableName;</span> |
| <span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.TableNotFoundException;</span> |
| <span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;</span> |
| <span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.client.replication.TableCFs;</span> |
| <span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.client.security.SecurityCapability;</span> |
| <span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;</span> |
| <span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.net.Address;</span> |
| <span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.quotas.QuotaFilter;</span> |
| <span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.quotas.QuotaSettings;</span> |
| <span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotView;</span> |
| <span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.regionserver.wal.FailedLogCloseException;</span> |
| <span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.replication.ReplicationException;</span> |
| <span class="source-line-no">056</span><span id="line-56">import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;</span> |
| <span class="source-line-no">057</span><span id="line-57">import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;</span> |
| <span class="source-line-no">058</span><span id="line-58">import org.apache.hadoop.hbase.replication.SyncReplicationState;</span> |
| <span class="source-line-no">059</span><span id="line-59">import org.apache.hadoop.hbase.rsgroup.RSGroupInfo;</span> |
| <span class="source-line-no">060</span><span id="line-60">import org.apache.hadoop.hbase.security.access.GetUserPermissionsRequest;</span> |
| <span class="source-line-no">061</span><span id="line-61">import org.apache.hadoop.hbase.security.access.Permission;</span> |
| <span class="source-line-no">062</span><span id="line-62">import org.apache.hadoop.hbase.security.access.UserPermission;</span> |
| <span class="source-line-no">063</span><span id="line-63">import org.apache.hadoop.hbase.snapshot.HBaseSnapshotException;</span> |
| <span class="source-line-no">064</span><span id="line-64">import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;</span> |
| <span class="source-line-no">065</span><span id="line-65">import org.apache.hadoop.hbase.snapshot.SnapshotCreationException;</span> |
| <span class="source-line-no">066</span><span id="line-66">import org.apache.hadoop.hbase.snapshot.UnknownSnapshotException;</span> |
| <span class="source-line-no">067</span><span id="line-67">import org.apache.hadoop.hbase.util.Bytes;</span> |
| <span class="source-line-no">068</span><span id="line-68">import org.apache.hadoop.hbase.util.Pair;</span> |
| <span class="source-line-no">069</span><span id="line-69">import org.apache.yetus.audience.InterfaceAudience;</span> |
| <span class="source-line-no">070</span><span id="line-70"></span> |
| <span class="source-line-no">071</span><span id="line-71">import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableList;</span> |
| <span class="source-line-no">072</span><span id="line-72"></span> |
| <span class="source-line-no">073</span><span id="line-73">/**</span> |
| <span class="source-line-no">074</span><span id="line-74"> * The administrative API for HBase. Obtain an instance from {@link Connection#getAdmin()} and call</span> |
| <span class="source-line-no">075</span><span id="line-75"> * {@link #close()} when done.</span> |
| <span class="source-line-no">076</span><span id="line-76"> * <p></span> |
| <span class="source-line-no">077</span><span id="line-77"> * Admin can be used to create, drop, list, enable and disable and otherwise modify tables, as well</span> |
| <span class="source-line-no">078</span><span id="line-78"> * as perform other administrative operations.</span> |
| <span class="source-line-no">079</span><span id="line-79"> * @see ConnectionFactory</span> |
| <span class="source-line-no">080</span><span id="line-80"> * @see Connection</span> |
| <span class="source-line-no">081</span><span id="line-81"> * @see Table</span> |
| <span class="source-line-no">082</span><span id="line-82"> * @since 0.99.0</span> |
| <span class="source-line-no">083</span><span id="line-83"> */</span> |
| <span class="source-line-no">084</span><span id="line-84">@InterfaceAudience.Public</span> |
| <span class="source-line-no">085</span><span id="line-85">public interface Admin extends Abortable, Closeable {</span> |
| <span class="source-line-no">086</span><span id="line-86"></span> |
| <span class="source-line-no">087</span><span id="line-87"> /**</span> |
| <span class="source-line-no">088</span><span id="line-88"> * Return the operation timeout for a rpc call.</span> |
| <span class="source-line-no">089</span><span id="line-89"> * @see #getSyncWaitTimeout()</span> |
| <span class="source-line-no">090</span><span id="line-90"> */</span> |
| <span class="source-line-no">091</span><span id="line-91"> int getOperationTimeout();</span> |
| <span class="source-line-no">092</span><span id="line-92"></span> |
| <span class="source-line-no">093</span><span id="line-93"> /**</span> |
| <span class="source-line-no">094</span><span id="line-94"> * Return the blocking wait time for an asynchronous operation. Can be configured by</span> |
| <span class="source-line-no">095</span><span id="line-95"> * {@code hbase.client.sync.wait.timeout.msec}.</span> |
| <span class="source-line-no">096</span><span id="line-96"> * <p/></span> |
| <span class="source-line-no">097</span><span id="line-97"> * For several operations, such as createTable, deleteTable, etc, the rpc call will finish right</span> |
| <span class="source-line-no">098</span><span id="line-98"> * after we schedule a procedure at master side, so the timeout will not be controlled by the</span> |
| <span class="source-line-no">099</span><span id="line-99"> * above {@link #getOperationTimeout()}. And timeout value here tells you how much time we will</span> |
| <span class="source-line-no">100</span><span id="line-100"> * wait until the procedure at master side is finished.</span> |
| <span class="source-line-no">101</span><span id="line-101"> * <p/></span> |
| <span class="source-line-no">102</span><span id="line-102"> * In general, you can consider that the implementation for XXXX method is just a</span> |
| <span class="source-line-no">103</span><span id="line-103"> * XXXXAsync().get(getSyncWaitTimeout(), TimeUnit.MILLISECONDS).</span> |
| <span class="source-line-no">104</span><span id="line-104"> * @see #getOperationTimeout()</span> |
| <span class="source-line-no">105</span><span id="line-105"> */</span> |
| <span class="source-line-no">106</span><span id="line-106"> int getSyncWaitTimeout();</span> |
| <span class="source-line-no">107</span><span id="line-107"></span> |
| <span class="source-line-no">108</span><span id="line-108"> @Override</span> |
| <span class="source-line-no">109</span><span id="line-109"> void abort(String why, Throwable e);</span> |
| <span class="source-line-no">110</span><span id="line-110"></span> |
| <span class="source-line-no">111</span><span id="line-111"> @Override</span> |
| <span class="source-line-no">112</span><span id="line-112"> boolean isAborted();</span> |
| <span class="source-line-no">113</span><span id="line-113"></span> |
| <span class="source-line-no">114</span><span id="line-114"> /** Returns Connection used by this object. */</span> |
| <span class="source-line-no">115</span><span id="line-115"> Connection getConnection();</span> |
| <span class="source-line-no">116</span><span id="line-116"></span> |
| <span class="source-line-no">117</span><span id="line-117"> /**</span> |
| <span class="source-line-no">118</span><span id="line-118"> * Check if a table exists.</span> |
| <span class="source-line-no">119</span><span id="line-119"> * @param tableName Table to check.</span> |
| <span class="source-line-no">120</span><span id="line-120"> * @return <code>true</code> if table exists already.</span> |
| <span class="source-line-no">121</span><span id="line-121"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">122</span><span id="line-122"> */</span> |
| <span class="source-line-no">123</span><span id="line-123"> boolean tableExists(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">124</span><span id="line-124"></span> |
| <span class="source-line-no">125</span><span id="line-125"> /**</span> |
| <span class="source-line-no">126</span><span id="line-126"> * List all the userspace tables.</span> |
| <span class="source-line-no">127</span><span id="line-127"> * @return a list of TableDescriptors</span> |
| <span class="source-line-no">128</span><span id="line-128"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">129</span><span id="line-129"> */</span> |
| <span class="source-line-no">130</span><span id="line-130"> List<TableDescriptor> listTableDescriptors() throws IOException;</span> |
| <span class="source-line-no">131</span><span id="line-131"></span> |
| <span class="source-line-no">132</span><span id="line-132"> /**</span> |
| <span class="source-line-no">133</span><span id="line-133"> * List all userspace tables and whether or not include system tables.</span> |
| <span class="source-line-no">134</span><span id="line-134"> * @return a list of TableDescriptors</span> |
| <span class="source-line-no">135</span><span id="line-135"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">136</span><span id="line-136"> */</span> |
| <span class="source-line-no">137</span><span id="line-137"> List<TableDescriptor> listTableDescriptors(boolean includeSysTables) throws IOException;</span> |
| <span class="source-line-no">138</span><span id="line-138"></span> |
| <span class="source-line-no">139</span><span id="line-139"> /**</span> |
| <span class="source-line-no">140</span><span id="line-140"> * List all the userspace tables that match the given pattern.</span> |
| <span class="source-line-no">141</span><span id="line-141"> * @param pattern The compiled regular expression to match against</span> |
| <span class="source-line-no">142</span><span id="line-142"> * @return a list of TableDescriptors</span> |
| <span class="source-line-no">143</span><span id="line-143"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">144</span><span id="line-144"> * @see #listTableDescriptors()</span> |
| <span class="source-line-no">145</span><span id="line-145"> */</span> |
| <span class="source-line-no">146</span><span id="line-146"> default List<TableDescriptor> listTableDescriptors(Pattern pattern) throws IOException {</span> |
| <span class="source-line-no">147</span><span id="line-147"> return listTableDescriptors(pattern, false);</span> |
| <span class="source-line-no">148</span><span id="line-148"> }</span> |
| <span class="source-line-no">149</span><span id="line-149"></span> |
| <span class="source-line-no">150</span><span id="line-150"> /**</span> |
| <span class="source-line-no">151</span><span id="line-151"> * List all the tables matching the given pattern.</span> |
| <span class="source-line-no">152</span><span id="line-152"> * @param pattern The compiled regular expression to match against</span> |
| <span class="source-line-no">153</span><span id="line-153"> * @param includeSysTables <code>false</code> to match only against userspace tables</span> |
| <span class="source-line-no">154</span><span id="line-154"> * @return a list of TableDescriptors</span> |
| <span class="source-line-no">155</span><span id="line-155"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">156</span><span id="line-156"> * @see #listTableDescriptors()</span> |
| <span class="source-line-no">157</span><span id="line-157"> */</span> |
| <span class="source-line-no">158</span><span id="line-158"> List<TableDescriptor> listTableDescriptors(Pattern pattern, boolean includeSysTables)</span> |
| <span class="source-line-no">159</span><span id="line-159"> throws IOException;</span> |
| <span class="source-line-no">160</span><span id="line-160"></span> |
| <span class="source-line-no">161</span><span id="line-161"> /**</span> |
| <span class="source-line-no">162</span><span id="line-162"> * List all enabled or disabled tables</span> |
| <span class="source-line-no">163</span><span id="line-163"> * @param isEnabled is true means return enabled tables, false means return disabled tables</span> |
| <span class="source-line-no">164</span><span id="line-164"> * @return a list of enabled or disabled tables</span> |
| <span class="source-line-no">165</span><span id="line-165"> */</span> |
| <span class="source-line-no">166</span><span id="line-166"> List<TableDescriptor> listTableDescriptorsByState(boolean isEnabled) throws IOException;</span> |
| <span class="source-line-no">167</span><span id="line-167"></span> |
| <span class="source-line-no">168</span><span id="line-168"> /**</span> |
| <span class="source-line-no">169</span><span id="line-169"> * List all of the names of userspace tables.</span> |
| <span class="source-line-no">170</span><span id="line-170"> * @return TableName[] table names</span> |
| <span class="source-line-no">171</span><span id="line-171"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">172</span><span id="line-172"> */</span> |
| <span class="source-line-no">173</span><span id="line-173"> TableName[] listTableNames() throws IOException;</span> |
| <span class="source-line-no">174</span><span id="line-174"></span> |
| <span class="source-line-no">175</span><span id="line-175"> /**</span> |
| <span class="source-line-no">176</span><span id="line-176"> * List all of the names of userspace tables.</span> |
| <span class="source-line-no">177</span><span id="line-177"> * @param pattern The regular expression to match against</span> |
| <span class="source-line-no">178</span><span id="line-178"> * @return array of table names</span> |
| <span class="source-line-no">179</span><span id="line-179"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">180</span><span id="line-180"> */</span> |
| <span class="source-line-no">181</span><span id="line-181"> default TableName[] listTableNames(Pattern pattern) throws IOException {</span> |
| <span class="source-line-no">182</span><span id="line-182"> return listTableNames(pattern, false);</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"> /**</span> |
| <span class="source-line-no">186</span><span id="line-186"> * List all of the names of userspace tables.</span> |
| <span class="source-line-no">187</span><span id="line-187"> * @param pattern The regular expression to match against</span> |
| <span class="source-line-no">188</span><span id="line-188"> * @param includeSysTables <code>false</code> to match only against userspace tables</span> |
| <span class="source-line-no">189</span><span id="line-189"> * @return TableName[] table names</span> |
| <span class="source-line-no">190</span><span id="line-190"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">191</span><span id="line-191"> */</span> |
| <span class="source-line-no">192</span><span id="line-192"> TableName[] listTableNames(Pattern pattern, boolean includeSysTables) throws IOException;</span> |
| <span class="source-line-no">193</span><span id="line-193"></span> |
| <span class="source-line-no">194</span><span id="line-194"> /**</span> |
| <span class="source-line-no">195</span><span id="line-195"> * List all enabled or disabled table names</span> |
| <span class="source-line-no">196</span><span id="line-196"> * @param isEnabled is true means return enabled table names, false means return disabled table</span> |
| <span class="source-line-no">197</span><span id="line-197"> * names</span> |
| <span class="source-line-no">198</span><span id="line-198"> * @return a list of enabled or disabled table names</span> |
| <span class="source-line-no">199</span><span id="line-199"> */</span> |
| <span class="source-line-no">200</span><span id="line-200"> List<TableName> listTableNamesByState(boolean isEnabled) throws IOException;</span> |
| <span class="source-line-no">201</span><span id="line-201"></span> |
| <span class="source-line-no">202</span><span id="line-202"> /**</span> |
| <span class="source-line-no">203</span><span id="line-203"> * Get a table descriptor.</span> |
| <span class="source-line-no">204</span><span id="line-204"> * @param tableName as a {@link TableName}</span> |
| <span class="source-line-no">205</span><span id="line-205"> * @return the tableDescriptor</span> |
| <span class="source-line-no">206</span><span id="line-206"> * @throws TableNotFoundException if the table was not found</span> |
| <span class="source-line-no">207</span><span id="line-207"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">208</span><span id="line-208"> */</span> |
| <span class="source-line-no">209</span><span id="line-209"> TableDescriptor getDescriptor(TableName tableName) throws TableNotFoundException, IOException;</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"> * Creates a new table. Synchronous operation.</span> |
| <span class="source-line-no">213</span><span id="line-213"> * @param desc table descriptor for table</span> |
| <span class="source-line-no">214</span><span id="line-214"> * @throws IllegalArgumentException if the table name is reserved</span> |
| <span class="source-line-no">215</span><span id="line-215"> * @throws org.apache.hadoop.hbase.MasterNotRunningException if master is not running</span> |
| <span class="source-line-no">216</span><span id="line-216"> * @throws TableExistsException if table already exists (If</span> |
| <span class="source-line-no">217</span><span id="line-217"> * concurrent threads, the table may</span> |
| <span class="source-line-no">218</span><span id="line-218"> * have been created between</span> |
| <span class="source-line-no">219</span><span id="line-219"> * test-for-existence and</span> |
| <span class="source-line-no">220</span><span id="line-220"> * attempt-at-creation).</span> |
| <span class="source-line-no">221</span><span id="line-221"> * @throws IOException if a remote or network exception</span> |
| <span class="source-line-no">222</span><span id="line-222"> * occurs</span> |
| <span class="source-line-no">223</span><span id="line-223"> */</span> |
| <span class="source-line-no">224</span><span id="line-224"> default void createTable(TableDescriptor desc) throws IOException {</span> |
| <span class="source-line-no">225</span><span id="line-225"> get(createTableAsync(desc), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</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"> * Creates a new table with the specified number of regions. The start key specified will become</span> |
| <span class="source-line-no">230</span><span id="line-230"> * the end key of the first region of the table, and the end key specified will become the start</span> |
| <span class="source-line-no">231</span><span id="line-231"> * key of the last region of the table (the first region has a null start key and the last region</span> |
| <span class="source-line-no">232</span><span id="line-232"> * has a null end key). BigInteger math will be used to divide the key range specified into enough</span> |
| <span class="source-line-no">233</span><span id="line-233"> * segments to make the required number of total regions. Synchronous operation.</span> |
| <span class="source-line-no">234</span><span id="line-234"> * @param desc table descriptor for table</span> |
| <span class="source-line-no">235</span><span id="line-235"> * @param startKey beginning of key range</span> |
| <span class="source-line-no">236</span><span id="line-236"> * @param endKey end of key range</span> |
| <span class="source-line-no">237</span><span id="line-237"> * @param numRegions the total number of regions to create</span> |
| <span class="source-line-no">238</span><span id="line-238"> * @throws IOException if a remote or network exception</span> |
| <span class="source-line-no">239</span><span id="line-239"> * occurs</span> |
| <span class="source-line-no">240</span><span id="line-240"> * @throws IllegalArgumentException if the table name is reserved</span> |
| <span class="source-line-no">241</span><span id="line-241"> * @throws org.apache.hadoop.hbase.MasterNotRunningException if master is not running</span> |
| <span class="source-line-no">242</span><span id="line-242"> * @throws TableExistsException if table already exists (If</span> |
| <span class="source-line-no">243</span><span id="line-243"> * concurrent threads, the table may</span> |
| <span class="source-line-no">244</span><span id="line-244"> * have been created between</span> |
| <span class="source-line-no">245</span><span id="line-245"> * test-for-existence and</span> |
| <span class="source-line-no">246</span><span id="line-246"> * attempt-at-creation).</span> |
| <span class="source-line-no">247</span><span id="line-247"> */</span> |
| <span class="source-line-no">248</span><span id="line-248"> void createTable(TableDescriptor desc, byte[] startKey, byte[] endKey, int numRegions)</span> |
| <span class="source-line-no">249</span><span id="line-249"> throws IOException;</span> |
| <span class="source-line-no">250</span><span id="line-250"></span> |
| <span class="source-line-no">251</span><span id="line-251"> /**</span> |
| <span class="source-line-no">252</span><span id="line-252"> * Creates a new table with an initial set of empty regions defined by the specified split keys.</span> |
| <span class="source-line-no">253</span><span id="line-253"> * The total number of regions created will be the number of split keys plus one. Synchronous</span> |
| <span class="source-line-no">254</span><span id="line-254"> * operation. Note : Avoid passing empty split key.</span> |
| <span class="source-line-no">255</span><span id="line-255"> * @param desc table descriptor for table</span> |
| <span class="source-line-no">256</span><span id="line-256"> * @param splitKeys array of split keys for the initial regions of the table</span> |
| <span class="source-line-no">257</span><span id="line-257"> * @throws IllegalArgumentException if the table name is reserved, if the</span> |
| <span class="source-line-no">258</span><span id="line-258"> * split keys are repeated and if the</span> |
| <span class="source-line-no">259</span><span id="line-259"> * split key has empty byte array.</span> |
| <span class="source-line-no">260</span><span id="line-260"> * @throws org.apache.hadoop.hbase.MasterNotRunningException if master is not running</span> |
| <span class="source-line-no">261</span><span id="line-261"> * @throws TableExistsException if table already exists (If</span> |
| <span class="source-line-no">262</span><span id="line-262"> * concurrent threads, the table may</span> |
| <span class="source-line-no">263</span><span id="line-263"> * have been created between</span> |
| <span class="source-line-no">264</span><span id="line-264"> * test-for-existence and</span> |
| <span class="source-line-no">265</span><span id="line-265"> * attempt-at-creation).</span> |
| <span class="source-line-no">266</span><span id="line-266"> * @throws IOException if a remote or network exception</span> |
| <span class="source-line-no">267</span><span id="line-267"> * occurs</span> |
| <span class="source-line-no">268</span><span id="line-268"> */</span> |
| <span class="source-line-no">269</span><span id="line-269"> default void createTable(TableDescriptor desc, byte[][] splitKeys) throws IOException {</span> |
| <span class="source-line-no">270</span><span id="line-270"> get(createTableAsync(desc, splitKeys), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">271</span><span id="line-271"> }</span> |
| <span class="source-line-no">272</span><span id="line-272"></span> |
| <span class="source-line-no">273</span><span id="line-273"> /**</span> |
| <span class="source-line-no">274</span><span id="line-274"> * Creates a new table but does not block and wait for it to come online. You can use</span> |
| <span class="source-line-no">275</span><span id="line-275"> * Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">276</span><span id="line-276"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">277</span><span id="line-277"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">278</span><span id="line-278"> * <p/></span> |
| <span class="source-line-no">279</span><span id="line-279"> * Throws IllegalArgumentException Bad table name, if the split keys are repeated and if the split</span> |
| <span class="source-line-no">280</span><span id="line-280"> * key has empty byte array.</span> |
| <span class="source-line-no">281</span><span id="line-281"> * @param desc table descriptor for table</span> |
| <span class="source-line-no">282</span><span id="line-282"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">283</span><span id="line-283"> * @return the result of the async creation. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">284</span><span id="line-284"> * operation to complete.</span> |
| <span class="source-line-no">285</span><span id="line-285"> */</span> |
| <span class="source-line-no">286</span><span id="line-286"> Future<Void> createTableAsync(TableDescriptor desc) throws IOException;</span> |
| <span class="source-line-no">287</span><span id="line-287"></span> |
| <span class="source-line-no">288</span><span id="line-288"> /**</span> |
| <span class="source-line-no">289</span><span id="line-289"> * Creates a new table but does not block and wait for it to come online. You can use</span> |
| <span class="source-line-no">290</span><span id="line-290"> * Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">291</span><span id="line-291"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">292</span><span id="line-292"> * case the wait timeout was not long enough to allow the operation to complete. Throws</span> |
| <span class="source-line-no">293</span><span id="line-293"> * IllegalArgumentException Bad table name, if the split keys are repeated and if the split key</span> |
| <span class="source-line-no">294</span><span id="line-294"> * has empty byte array.</span> |
| <span class="source-line-no">295</span><span id="line-295"> * @param desc table descriptor for table</span> |
| <span class="source-line-no">296</span><span id="line-296"> * @param splitKeys keys to check if the table has been created with all split keys</span> |
| <span class="source-line-no">297</span><span id="line-297"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">298</span><span id="line-298"> * @return the result of the async creation. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">299</span><span id="line-299"> * operation to complete.</span> |
| <span class="source-line-no">300</span><span id="line-300"> */</span> |
| <span class="source-line-no">301</span><span id="line-301"> Future<Void> createTableAsync(TableDescriptor desc, byte[][] splitKeys) throws IOException;</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"> * Deletes a table. Synchronous operation.</span> |
| <span class="source-line-no">305</span><span id="line-305"> * @param tableName name of table to delete</span> |
| <span class="source-line-no">306</span><span id="line-306"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">307</span><span id="line-307"> */</span> |
| <span class="source-line-no">308</span><span id="line-308"> default void deleteTable(TableName tableName) throws IOException {</span> |
| <span class="source-line-no">309</span><span id="line-309"> get(deleteTableAsync(tableName), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">310</span><span id="line-310"> }</span> |
| <span class="source-line-no">311</span><span id="line-311"></span> |
| <span class="source-line-no">312</span><span id="line-312"> /**</span> |
| <span class="source-line-no">313</span><span id="line-313"> * Deletes the table but does not block and wait for it to be completely removed. You can use</span> |
| <span class="source-line-no">314</span><span id="line-314"> * Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">315</span><span id="line-315"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">316</span><span id="line-316"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">317</span><span id="line-317"> * @param tableName name of table to delete</span> |
| <span class="source-line-no">318</span><span id="line-318"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">319</span><span id="line-319"> * @return the result of the async delete. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">320</span><span id="line-320"> * operation to complete.</span> |
| <span class="source-line-no">321</span><span id="line-321"> */</span> |
| <span class="source-line-no">322</span><span id="line-322"> Future<Void> deleteTableAsync(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">323</span><span id="line-323"></span> |
| <span class="source-line-no">324</span><span id="line-324"> /**</span> |
| <span class="source-line-no">325</span><span id="line-325"> * Truncate a table. Synchronous operation.</span> |
| <span class="source-line-no">326</span><span id="line-326"> * @param tableName name of table to truncate</span> |
| <span class="source-line-no">327</span><span id="line-327"> * @param preserveSplits <code>true</code> if the splits should be preserved</span> |
| <span class="source-line-no">328</span><span id="line-328"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">329</span><span id="line-329"> */</span> |
| <span class="source-line-no">330</span><span id="line-330"> default void truncateTable(TableName tableName, boolean preserveSplits) throws IOException {</span> |
| <span class="source-line-no">331</span><span id="line-331"> get(truncateTableAsync(tableName, preserveSplits), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">332</span><span id="line-332"> }</span> |
| <span class="source-line-no">333</span><span id="line-333"></span> |
| <span class="source-line-no">334</span><span id="line-334"> /**</span> |
| <span class="source-line-no">335</span><span id="line-335"> * Truncate the table but does not block and wait for it to be completely enabled. You can use</span> |
| <span class="source-line-no">336</span><span id="line-336"> * Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">337</span><span id="line-337"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">338</span><span id="line-338"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">339</span><span id="line-339"> * @param tableName name of table to delete</span> |
| <span class="source-line-no">340</span><span id="line-340"> * @param preserveSplits <code>true</code> if the splits should be preserved</span> |
| <span class="source-line-no">341</span><span id="line-341"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">342</span><span id="line-342"> * @return the result of the async truncate. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">343</span><span id="line-343"> * operation to complete.</span> |
| <span class="source-line-no">344</span><span id="line-344"> */</span> |
| <span class="source-line-no">345</span><span id="line-345"> Future<Void> truncateTableAsync(TableName tableName, boolean preserveSplits) throws IOException;</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"> * Enable a table. May timeout. Use {@link #enableTableAsync(org.apache.hadoop.hbase.TableName)}</span> |
| <span class="source-line-no">349</span><span id="line-349"> * and {@link #isTableEnabled(org.apache.hadoop.hbase.TableName)} instead. The table has to be in</span> |
| <span class="source-line-no">350</span><span id="line-350"> * disabled state for it to be enabled.</span> |
| <span class="source-line-no">351</span><span id="line-351"> * @param tableName name of the table</span> |
| <span class="source-line-no">352</span><span id="line-352"> * @throws IOException There could be couple types of IOException TableNotFoundException means the</span> |
| <span class="source-line-no">353</span><span id="line-353"> * table doesn't exist. TableNotDisabledException means the table isn't in</span> |
| <span class="source-line-no">354</span><span id="line-354"> * disabled state.</span> |
| <span class="source-line-no">355</span><span id="line-355"> * @see #isTableEnabled(org.apache.hadoop.hbase.TableName)</span> |
| <span class="source-line-no">356</span><span id="line-356"> * @see #disableTable(org.apache.hadoop.hbase.TableName)</span> |
| <span class="source-line-no">357</span><span id="line-357"> * @see #enableTableAsync(org.apache.hadoop.hbase.TableName)</span> |
| <span class="source-line-no">358</span><span id="line-358"> */</span> |
| <span class="source-line-no">359</span><span id="line-359"> default void enableTable(TableName tableName) throws IOException {</span> |
| <span class="source-line-no">360</span><span id="line-360"> get(enableTableAsync(tableName), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">361</span><span id="line-361"> }</span> |
| <span class="source-line-no">362</span><span id="line-362"></span> |
| <span class="source-line-no">363</span><span id="line-363"> /**</span> |
| <span class="source-line-no">364</span><span id="line-364"> * Enable the table but does not block and wait for it to be completely enabled. You can use</span> |
| <span class="source-line-no">365</span><span id="line-365"> * Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">366</span><span id="line-366"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">367</span><span id="line-367"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">368</span><span id="line-368"> * @param tableName name of table to delete</span> |
| <span class="source-line-no">369</span><span id="line-369"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">370</span><span id="line-370"> * @return the result of the async enable. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">371</span><span id="line-371"> * operation to complete.</span> |
| <span class="source-line-no">372</span><span id="line-372"> */</span> |
| <span class="source-line-no">373</span><span id="line-373"> Future<Void> enableTableAsync(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">374</span><span id="line-374"></span> |
| <span class="source-line-no">375</span><span id="line-375"> /**</span> |
| <span class="source-line-no">376</span><span id="line-376"> * Disable the table but does not block and wait for it to be completely disabled. You can use</span> |
| <span class="source-line-no">377</span><span id="line-377"> * Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">378</span><span id="line-378"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">379</span><span id="line-379"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">380</span><span id="line-380"> * @param tableName name of table to delete</span> |
| <span class="source-line-no">381</span><span id="line-381"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">382</span><span id="line-382"> * @return the result of the async disable. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">383</span><span id="line-383"> * operation to complete.</span> |
| <span class="source-line-no">384</span><span id="line-384"> */</span> |
| <span class="source-line-no">385</span><span id="line-385"> Future<Void> disableTableAsync(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">386</span><span id="line-386"></span> |
| <span class="source-line-no">387</span><span id="line-387"> /**</span> |
| <span class="source-line-no">388</span><span id="line-388"> * Disable table and wait on completion. May timeout eventually. Use</span> |
| <span class="source-line-no">389</span><span id="line-389"> * {@link #disableTableAsync(org.apache.hadoop.hbase.TableName)} and</span> |
| <span class="source-line-no">390</span><span id="line-390"> * {@link #isTableDisabled(org.apache.hadoop.hbase.TableName)} instead. The table has to be in</span> |
| <span class="source-line-no">391</span><span id="line-391"> * enabled state for it to be disabled.</span> |
| <span class="source-line-no">392</span><span id="line-392"> * @throws IOException There could be couple types of IOException TableNotFoundException means the</span> |
| <span class="source-line-no">393</span><span id="line-393"> * table doesn't exist. TableNotEnabledException means the table isn't in</span> |
| <span class="source-line-no">394</span><span id="line-394"> * enabled state.</span> |
| <span class="source-line-no">395</span><span id="line-395"> */</span> |
| <span class="source-line-no">396</span><span id="line-396"> default void disableTable(TableName tableName) throws IOException {</span> |
| <span class="source-line-no">397</span><span id="line-397"> get(disableTableAsync(tableName), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">398</span><span id="line-398"> }</span> |
| <span class="source-line-no">399</span><span id="line-399"></span> |
| <span class="source-line-no">400</span><span id="line-400"> /**</span> |
| <span class="source-line-no">401</span><span id="line-401"> * Check if a table is enabled.</span> |
| <span class="source-line-no">402</span><span id="line-402"> * @param tableName name of table to check</span> |
| <span class="source-line-no">403</span><span id="line-403"> * @return <code>true</code> if table is on-line</span> |
| <span class="source-line-no">404</span><span id="line-404"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">405</span><span id="line-405"> */</span> |
| <span class="source-line-no">406</span><span id="line-406"> boolean isTableEnabled(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">407</span><span id="line-407"></span> |
| <span class="source-line-no">408</span><span id="line-408"> /**</span> |
| <span class="source-line-no">409</span><span id="line-409"> * Check if a table is disabled.</span> |
| <span class="source-line-no">410</span><span id="line-410"> * @param tableName name of table to check</span> |
| <span class="source-line-no">411</span><span id="line-411"> * @return <code>true</code> if table is off-line</span> |
| <span class="source-line-no">412</span><span id="line-412"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">413</span><span id="line-413"> */</span> |
| <span class="source-line-no">414</span><span id="line-414"> boolean isTableDisabled(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">415</span><span id="line-415"></span> |
| <span class="source-line-no">416</span><span id="line-416"> /**</span> |
| <span class="source-line-no">417</span><span id="line-417"> * Check if a table is available.</span> |
| <span class="source-line-no">418</span><span id="line-418"> * @param tableName name of table to check</span> |
| <span class="source-line-no">419</span><span id="line-419"> * @return <code>true</code> if all regions of the table are available</span> |
| <span class="source-line-no">420</span><span id="line-420"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">421</span><span id="line-421"> */</span> |
| <span class="source-line-no">422</span><span id="line-422"> boolean isTableAvailable(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">423</span><span id="line-423"></span> |
| <span class="source-line-no">424</span><span id="line-424"> /**</span> |
| <span class="source-line-no">425</span><span id="line-425"> * Add a column family to an existing table. Synchronous operation. Use</span> |
| <span class="source-line-no">426</span><span id="line-426"> * {@link #addColumnFamilyAsync(TableName, ColumnFamilyDescriptor)} instead because it returns a</span> |
| <span class="source-line-no">427</span><span id="line-427"> * {@link Future} from which you can learn whether success or failure.</span> |
| <span class="source-line-no">428</span><span id="line-428"> * @param tableName name of the table to add column family to</span> |
| <span class="source-line-no">429</span><span id="line-429"> * @param columnFamily column family descriptor of column family to be added</span> |
| <span class="source-line-no">430</span><span id="line-430"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">431</span><span id="line-431"> */</span> |
| <span class="source-line-no">432</span><span id="line-432"> default void addColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily)</span> |
| <span class="source-line-no">433</span><span id="line-433"> throws IOException {</span> |
| <span class="source-line-no">434</span><span id="line-434"> get(addColumnFamilyAsync(tableName, columnFamily), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">435</span><span id="line-435"> }</span> |
| <span class="source-line-no">436</span><span id="line-436"></span> |
| <span class="source-line-no">437</span><span id="line-437"> /**</span> |
| <span class="source-line-no">438</span><span id="line-438"> * Add a column family to an existing table. Asynchronous operation. You can use Future.get(long,</span> |
| <span class="source-line-no">439</span><span id="line-439"> * TimeUnit) to wait on the operation to complete. It may throw ExecutionException if there was an</span> |
| <span class="source-line-no">440</span><span id="line-440"> * error while executing the operation or TimeoutException in case the wait timeout was not long</span> |
| <span class="source-line-no">441</span><span id="line-441"> * enough to allow the operation to complete.</span> |
| <span class="source-line-no">442</span><span id="line-442"> * @param tableName name of the table to add column family to</span> |
| <span class="source-line-no">443</span><span id="line-443"> * @param columnFamily column family descriptor of column family to be added</span> |
| <span class="source-line-no">444</span><span id="line-444"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">445</span><span id="line-445"> * @return the result of the async add column family. You can use Future.get(long, TimeUnit) to</span> |
| <span class="source-line-no">446</span><span id="line-446"> * wait on the operation to complete.</span> |
| <span class="source-line-no">447</span><span id="line-447"> */</span> |
| <span class="source-line-no">448</span><span id="line-448"> Future<Void> addColumnFamilyAsync(TableName tableName, ColumnFamilyDescriptor columnFamily)</span> |
| <span class="source-line-no">449</span><span id="line-449"> throws IOException;</span> |
| <span class="source-line-no">450</span><span id="line-450"></span> |
| <span class="source-line-no">451</span><span id="line-451"> /**</span> |
| <span class="source-line-no">452</span><span id="line-452"> * Delete a column family from a table. Synchronous operation. Use</span> |
| <span class="source-line-no">453</span><span id="line-453"> * {@link #deleteColumnFamily(TableName, byte[])} instead because it returns a {@link Future} from</span> |
| <span class="source-line-no">454</span><span id="line-454"> * which you can learn whether success or failure.</span> |
| <span class="source-line-no">455</span><span id="line-455"> * @param tableName name of table</span> |
| <span class="source-line-no">456</span><span id="line-456"> * @param columnFamily name of column family to be deleted</span> |
| <span class="source-line-no">457</span><span id="line-457"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">458</span><span id="line-458"> */</span> |
| <span class="source-line-no">459</span><span id="line-459"> default void deleteColumnFamily(TableName tableName, byte[] columnFamily) throws IOException {</span> |
| <span class="source-line-no">460</span><span id="line-460"> get(deleteColumnFamilyAsync(tableName, columnFamily), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">461</span><span id="line-461"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">462</span><span id="line-462"> }</span> |
| <span class="source-line-no">463</span><span id="line-463"></span> |
| <span class="source-line-no">464</span><span id="line-464"> /**</span> |
| <span class="source-line-no">465</span><span id="line-465"> * Delete a column family from a table. Asynchronous operation. You can use Future.get(long,</span> |
| <span class="source-line-no">466</span><span id="line-466"> * TimeUnit) to wait on the operation to complete. It may throw ExecutionException if there was an</span> |
| <span class="source-line-no">467</span><span id="line-467"> * error while executing the operation or TimeoutException in case the wait timeout was not long</span> |
| <span class="source-line-no">468</span><span id="line-468"> * enough to allow the operation to complete.</span> |
| <span class="source-line-no">469</span><span id="line-469"> * @param tableName name of table</span> |
| <span class="source-line-no">470</span><span id="line-470"> * @param columnFamily name of column family to be deleted</span> |
| <span class="source-line-no">471</span><span id="line-471"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">472</span><span id="line-472"> * @return the result of the async delete column family. You can use Future.get(long, TimeUnit) to</span> |
| <span class="source-line-no">473</span><span id="line-473"> * wait on the operation to complete.</span> |
| <span class="source-line-no">474</span><span id="line-474"> */</span> |
| <span class="source-line-no">475</span><span id="line-475"> Future<Void> deleteColumnFamilyAsync(TableName tableName, byte[] columnFamily) throws IOException;</span> |
| <span class="source-line-no">476</span><span id="line-476"></span> |
| <span class="source-line-no">477</span><span id="line-477"> /**</span> |
| <span class="source-line-no">478</span><span id="line-478"> * Modify an existing column family on a table. Synchronous operation. Use</span> |
| <span class="source-line-no">479</span><span id="line-479"> * {@link #modifyColumnFamilyAsync(TableName, ColumnFamilyDescriptor)} instead because it returns</span> |
| <span class="source-line-no">480</span><span id="line-480"> * a {@link Future} from which you can learn whether success or failure.</span> |
| <span class="source-line-no">481</span><span id="line-481"> * @param tableName name of table</span> |
| <span class="source-line-no">482</span><span id="line-482"> * @param columnFamily new column family descriptor to use</span> |
| <span class="source-line-no">483</span><span id="line-483"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">484</span><span id="line-484"> */</span> |
| <span class="source-line-no">485</span><span id="line-485"> default void modifyColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily)</span> |
| <span class="source-line-no">486</span><span id="line-486"> throws IOException {</span> |
| <span class="source-line-no">487</span><span id="line-487"> get(modifyColumnFamilyAsync(tableName, columnFamily), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">488</span><span id="line-488"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">489</span><span id="line-489"> }</span> |
| <span class="source-line-no">490</span><span id="line-490"></span> |
| <span class="source-line-no">491</span><span id="line-491"> /**</span> |
| <span class="source-line-no">492</span><span id="line-492"> * Modify an existing column family on a table. Asynchronous operation. You can use</span> |
| <span class="source-line-no">493</span><span id="line-493"> * Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">494</span><span id="line-494"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">495</span><span id="line-495"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">496</span><span id="line-496"> * @param tableName name of table</span> |
| <span class="source-line-no">497</span><span id="line-497"> * @param columnFamily new column family descriptor to use</span> |
| <span class="source-line-no">498</span><span id="line-498"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">499</span><span id="line-499"> * @return the result of the async modify column family. You can use Future.get(long, TimeUnit) to</span> |
| <span class="source-line-no">500</span><span id="line-500"> * wait on the operation to complete.</span> |
| <span class="source-line-no">501</span><span id="line-501"> */</span> |
| <span class="source-line-no">502</span><span id="line-502"> Future<Void> modifyColumnFamilyAsync(TableName tableName, ColumnFamilyDescriptor columnFamily)</span> |
| <span class="source-line-no">503</span><span id="line-503"> throws IOException;</span> |
| <span class="source-line-no">504</span><span id="line-504"></span> |
| <span class="source-line-no">505</span><span id="line-505"> /**</span> |
| <span class="source-line-no">506</span><span id="line-506"> * Change the store file tracker of the given table's given family.</span> |
| <span class="source-line-no">507</span><span id="line-507"> * @param tableName the table you want to change</span> |
| <span class="source-line-no">508</span><span id="line-508"> * @param family the family you want to change</span> |
| <span class="source-line-no">509</span><span id="line-509"> * @param dstSFT the destination store file tracker</span> |
| <span class="source-line-no">510</span><span id="line-510"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">511</span><span id="line-511"> */</span> |
| <span class="source-line-no">512</span><span id="line-512"> default void modifyColumnFamilyStoreFileTracker(TableName tableName, byte[] family, String dstSFT)</span> |
| <span class="source-line-no">513</span><span id="line-513"> throws IOException {</span> |
| <span class="source-line-no">514</span><span id="line-514"> get(modifyColumnFamilyStoreFileTrackerAsync(tableName, family, dstSFT), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">515</span><span id="line-515"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">516</span><span id="line-516"> }</span> |
| <span class="source-line-no">517</span><span id="line-517"></span> |
| <span class="source-line-no">518</span><span id="line-518"> /**</span> |
| <span class="source-line-no">519</span><span id="line-519"> * Change the store file tracker of the given table's given family.</span> |
| <span class="source-line-no">520</span><span id="line-520"> * @param tableName the table you want to change</span> |
| <span class="source-line-no">521</span><span id="line-521"> * @param family the family you want to change</span> |
| <span class="source-line-no">522</span><span id="line-522"> * @param dstSFT the destination store file tracker</span> |
| <span class="source-line-no">523</span><span id="line-523"> * @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">524</span><span id="line-524"> * operation to complete</span> |
| <span class="source-line-no">525</span><span id="line-525"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">526</span><span id="line-526"> */</span> |
| <span class="source-line-no">527</span><span id="line-527"> Future<Void> modifyColumnFamilyStoreFileTrackerAsync(TableName tableName, byte[] family,</span> |
| <span class="source-line-no">528</span><span id="line-528"> String dstSFT) throws IOException;</span> |
| <span class="source-line-no">529</span><span id="line-529"></span> |
| <span class="source-line-no">530</span><span id="line-530"> /**</span> |
| <span class="source-line-no">531</span><span id="line-531"> * Get all the online regions on a region server.</span> |
| <span class="source-line-no">532</span><span id="line-532"> * @return List of {@link RegionInfo}</span> |
| <span class="source-line-no">533</span><span id="line-533"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">534</span><span id="line-534"> */</span> |
| <span class="source-line-no">535</span><span id="line-535"> List<RegionInfo> getRegions(ServerName serverName) throws IOException;</span> |
| <span class="source-line-no">536</span><span id="line-536"></span> |
| <span class="source-line-no">537</span><span id="line-537"> /**</span> |
| <span class="source-line-no">538</span><span id="line-538"> * Flush a table. Synchronous operation.</span> |
| <span class="source-line-no">539</span><span id="line-539"> * @param tableName table to flush</span> |
| <span class="source-line-no">540</span><span id="line-540"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">541</span><span id="line-541"> */</span> |
| <span class="source-line-no">542</span><span id="line-542"> void flush(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">543</span><span id="line-543"></span> |
| <span class="source-line-no">544</span><span id="line-544"> /**</span> |
| <span class="source-line-no">545</span><span id="line-545"> * Flush the specified column family stores on all regions of the passed table. This runs as a</span> |
| <span class="source-line-no">546</span><span id="line-546"> * synchronous operation.</span> |
| <span class="source-line-no">547</span><span id="line-547"> * @param tableName table to flush</span> |
| <span class="source-line-no">548</span><span id="line-548"> * @param columnFamily column family within a table</span> |
| <span class="source-line-no">549</span><span id="line-549"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">550</span><span id="line-550"> */</span> |
| <span class="source-line-no">551</span><span id="line-551"> void flush(TableName tableName, byte[] columnFamily) throws IOException;</span> |
| <span class="source-line-no">552</span><span id="line-552"></span> |
| <span class="source-line-no">553</span><span id="line-553"> /**</span> |
| <span class="source-line-no">554</span><span id="line-554"> * Flush the specified column family stores on all regions of the passed table. This runs as a</span> |
| <span class="source-line-no">555</span><span id="line-555"> * synchronous operation.</span> |
| <span class="source-line-no">556</span><span id="line-556"> * @param tableName table to flush</span> |
| <span class="source-line-no">557</span><span id="line-557"> * @param columnFamilies column families within a table</span> |
| <span class="source-line-no">558</span><span id="line-558"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">559</span><span id="line-559"> */</span> |
| <span class="source-line-no">560</span><span id="line-560"> void flush(TableName tableName, List<byte[]> columnFamilies) throws IOException;</span> |
| <span class="source-line-no">561</span><span id="line-561"></span> |
| <span class="source-line-no">562</span><span id="line-562"> /**</span> |
| <span class="source-line-no">563</span><span id="line-563"> * Flush an individual region. Synchronous operation.</span> |
| <span class="source-line-no">564</span><span id="line-564"> * @param regionName region to flush</span> |
| <span class="source-line-no">565</span><span id="line-565"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">566</span><span id="line-566"> */</span> |
| <span class="source-line-no">567</span><span id="line-567"> void flushRegion(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">568</span><span id="line-568"></span> |
| <span class="source-line-no">569</span><span id="line-569"> /**</span> |
| <span class="source-line-no">570</span><span id="line-570"> * Flush a column family within a region. Synchronous operation.</span> |
| <span class="source-line-no">571</span><span id="line-571"> * @param regionName region to flush</span> |
| <span class="source-line-no">572</span><span id="line-572"> * @param columnFamily column family within a region</span> |
| <span class="source-line-no">573</span><span id="line-573"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">574</span><span id="line-574"> */</span> |
| <span class="source-line-no">575</span><span id="line-575"> void flushRegion(byte[] regionName, byte[] columnFamily) throws IOException;</span> |
| <span class="source-line-no">576</span><span id="line-576"></span> |
| <span class="source-line-no">577</span><span id="line-577"> /**</span> |
| <span class="source-line-no">578</span><span id="line-578"> * Flush all regions on the region server. Synchronous operation.</span> |
| <span class="source-line-no">579</span><span id="line-579"> * @param serverName the region server name to flush</span> |
| <span class="source-line-no">580</span><span id="line-580"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">581</span><span id="line-581"> */</span> |
| <span class="source-line-no">582</span><span id="line-582"> void flushRegionServer(ServerName serverName) throws IOException;</span> |
| <span class="source-line-no">583</span><span id="line-583"></span> |
| <span class="source-line-no">584</span><span id="line-584"> /**</span> |
| <span class="source-line-no">585</span><span id="line-585"> * Compact a table. Asynchronous operation in that this method requests that a Compaction run and</span> |
| <span class="source-line-no">586</span><span id="line-586"> * then it returns. It does not wait on the completion of Compaction (it can take a while).</span> |
| <span class="source-line-no">587</span><span id="line-587"> * @param tableName table to compact</span> |
| <span class="source-line-no">588</span><span id="line-588"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">589</span><span id="line-589"> */</span> |
| <span class="source-line-no">590</span><span id="line-590"> void compact(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">591</span><span id="line-591"></span> |
| <span class="source-line-no">592</span><span id="line-592"> /**</span> |
| <span class="source-line-no">593</span><span id="line-593"> * Compact an individual region. Asynchronous operation in that this method requests that a</span> |
| <span class="source-line-no">594</span><span id="line-594"> * Compaction run and then it returns. It does not wait on the completion of Compaction (it can</span> |
| <span class="source-line-no">595</span><span id="line-595"> * take a while).</span> |
| <span class="source-line-no">596</span><span id="line-596"> * @param regionName region to compact</span> |
| <span class="source-line-no">597</span><span id="line-597"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">598</span><span id="line-598"> */</span> |
| <span class="source-line-no">599</span><span id="line-599"> void compactRegion(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">600</span><span id="line-600"></span> |
| <span class="source-line-no">601</span><span id="line-601"> /**</span> |
| <span class="source-line-no">602</span><span id="line-602"> * Compact a column family within a table. Asynchronous operation in that this method requests</span> |
| <span class="source-line-no">603</span><span id="line-603"> * that a Compaction run and then it returns. It does not wait on the completion of Compaction (it</span> |
| <span class="source-line-no">604</span><span id="line-604"> * can take a while).</span> |
| <span class="source-line-no">605</span><span id="line-605"> * @param tableName table to compact</span> |
| <span class="source-line-no">606</span><span id="line-606"> * @param columnFamily column family within a table</span> |
| <span class="source-line-no">607</span><span id="line-607"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">608</span><span id="line-608"> */</span> |
| <span class="source-line-no">609</span><span id="line-609"> void compact(TableName tableName, byte[] columnFamily) throws IOException;</span> |
| <span class="source-line-no">610</span><span id="line-610"></span> |
| <span class="source-line-no">611</span><span id="line-611"> /**</span> |
| <span class="source-line-no">612</span><span id="line-612"> * Compact a column family within a region. Asynchronous operation in that this method requests</span> |
| <span class="source-line-no">613</span><span id="line-613"> * that a Compaction run and then it returns. It does not wait on the completion of Compaction (it</span> |
| <span class="source-line-no">614</span><span id="line-614"> * can take a while).</span> |
| <span class="source-line-no">615</span><span id="line-615"> * @param regionName region to compact</span> |
| <span class="source-line-no">616</span><span id="line-616"> * @param columnFamily column family within a region</span> |
| <span class="source-line-no">617</span><span id="line-617"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">618</span><span id="line-618"> */</span> |
| <span class="source-line-no">619</span><span id="line-619"> void compactRegion(byte[] regionName, byte[] columnFamily) throws IOException;</span> |
| <span class="source-line-no">620</span><span id="line-620"></span> |
| <span class="source-line-no">621</span><span id="line-621"> /**</span> |
| <span class="source-line-no">622</span><span id="line-622"> * Compact a table. Asynchronous operation in that this method requests that a Compaction run and</span> |
| <span class="source-line-no">623</span><span id="line-623"> * then it returns. It does not wait on the completion of Compaction (it can take a while).</span> |
| <span class="source-line-no">624</span><span id="line-624"> * @param tableName table to compact</span> |
| <span class="source-line-no">625</span><span id="line-625"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">626</span><span id="line-626"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">627</span><span id="line-627"> */</span> |
| <span class="source-line-no">628</span><span id="line-628"> void compact(TableName tableName, CompactType compactType)</span> |
| <span class="source-line-no">629</span><span id="line-629"> throws IOException, InterruptedException;</span> |
| <span class="source-line-no">630</span><span id="line-630"></span> |
| <span class="source-line-no">631</span><span id="line-631"> /**</span> |
| <span class="source-line-no">632</span><span id="line-632"> * Compact a column family within a table. Asynchronous operation in that this method requests</span> |
| <span class="source-line-no">633</span><span id="line-633"> * that a Compaction run and then it returns. It does not wait on the completion of Compaction (it</span> |
| <span class="source-line-no">634</span><span id="line-634"> * can take a while).</span> |
| <span class="source-line-no">635</span><span id="line-635"> * @param tableName table to compact</span> |
| <span class="source-line-no">636</span><span id="line-636"> * @param columnFamily column family within a table</span> |
| <span class="source-line-no">637</span><span id="line-637"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">638</span><span id="line-638"> * @throws IOException if not a mob column family or if a remote or network exception occurs</span> |
| <span class="source-line-no">639</span><span id="line-639"> */</span> |
| <span class="source-line-no">640</span><span id="line-640"> void compact(TableName tableName, byte[] columnFamily, CompactType compactType)</span> |
| <span class="source-line-no">641</span><span id="line-641"> throws IOException, InterruptedException;</span> |
| <span class="source-line-no">642</span><span id="line-642"></span> |
| <span class="source-line-no">643</span><span id="line-643"> /**</span> |
| <span class="source-line-no">644</span><span id="line-644"> * Major compact a table. Asynchronous operation in that this method requests that a Compaction</span> |
| <span class="source-line-no">645</span><span id="line-645"> * run and then it returns. It does not wait on the completion of Compaction (it can take a</span> |
| <span class="source-line-no">646</span><span id="line-646"> * while).</span> |
| <span class="source-line-no">647</span><span id="line-647"> * @param tableName table to major compact</span> |
| <span class="source-line-no">648</span><span id="line-648"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">649</span><span id="line-649"> */</span> |
| <span class="source-line-no">650</span><span id="line-650"> void majorCompact(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">651</span><span id="line-651"></span> |
| <span class="source-line-no">652</span><span id="line-652"> /**</span> |
| <span class="source-line-no">653</span><span id="line-653"> * Major compact a table or an individual region. Asynchronous operation in that this method</span> |
| <span class="source-line-no">654</span><span id="line-654"> * requests that a Compaction run and then it returns. It does not wait on the completion of</span> |
| <span class="source-line-no">655</span><span id="line-655"> * Compaction (it can take a while).</span> |
| <span class="source-line-no">656</span><span id="line-656"> * @param regionName region to major compact</span> |
| <span class="source-line-no">657</span><span id="line-657"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">658</span><span id="line-658"> */</span> |
| <span class="source-line-no">659</span><span id="line-659"> void majorCompactRegion(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">660</span><span id="line-660"></span> |
| <span class="source-line-no">661</span><span id="line-661"> /**</span> |
| <span class="source-line-no">662</span><span id="line-662"> * Major compact a column family within a table. Asynchronous operation in that this method</span> |
| <span class="source-line-no">663</span><span id="line-663"> * requests that a Compaction run and then it returns. It does not wait on the completion of</span> |
| <span class="source-line-no">664</span><span id="line-664"> * Compaction (it can take a while).</span> |
| <span class="source-line-no">665</span><span id="line-665"> * @param tableName table to major compact</span> |
| <span class="source-line-no">666</span><span id="line-666"> * @param columnFamily column family within a table</span> |
| <span class="source-line-no">667</span><span id="line-667"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">668</span><span id="line-668"> */</span> |
| <span class="source-line-no">669</span><span id="line-669"> void majorCompact(TableName tableName, byte[] columnFamily) throws IOException;</span> |
| <span class="source-line-no">670</span><span id="line-670"></span> |
| <span class="source-line-no">671</span><span id="line-671"> /**</span> |
| <span class="source-line-no">672</span><span id="line-672"> * Major compact a column family within region. Asynchronous operation in that this method</span> |
| <span class="source-line-no">673</span><span id="line-673"> * requests that a Compaction run and then it returns. It does not wait on the completion of</span> |
| <span class="source-line-no">674</span><span id="line-674"> * Compaction (it can take a while).</span> |
| <span class="source-line-no">675</span><span id="line-675"> * @param regionName egion to major compact</span> |
| <span class="source-line-no">676</span><span id="line-676"> * @param columnFamily column family within a region</span> |
| <span class="source-line-no">677</span><span id="line-677"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">678</span><span id="line-678"> */</span> |
| <span class="source-line-no">679</span><span id="line-679"> void majorCompactRegion(byte[] regionName, byte[] columnFamily) throws IOException;</span> |
| <span class="source-line-no">680</span><span id="line-680"></span> |
| <span class="source-line-no">681</span><span id="line-681"> /**</span> |
| <span class="source-line-no">682</span><span id="line-682"> * Major compact a table. Asynchronous operation in that this method requests that a Compaction</span> |
| <span class="source-line-no">683</span><span id="line-683"> * run and then it returns. It does not wait on the completion of Compaction (it can take a</span> |
| <span class="source-line-no">684</span><span id="line-684"> * while).</span> |
| <span class="source-line-no">685</span><span id="line-685"> * @param tableName table to compact</span> |
| <span class="source-line-no">686</span><span id="line-686"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">687</span><span id="line-687"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">688</span><span id="line-688"> */</span> |
| <span class="source-line-no">689</span><span id="line-689"> void majorCompact(TableName tableName, CompactType compactType)</span> |
| <span class="source-line-no">690</span><span id="line-690"> throws IOException, InterruptedException;</span> |
| <span class="source-line-no">691</span><span id="line-691"></span> |
| <span class="source-line-no">692</span><span id="line-692"> /**</span> |
| <span class="source-line-no">693</span><span id="line-693"> * Major compact a column family within a table. Asynchronous operation in that this method</span> |
| <span class="source-line-no">694</span><span id="line-694"> * requests that a Compaction run and then it returns. It does not wait on the completion of</span> |
| <span class="source-line-no">695</span><span id="line-695"> * Compaction (it can take a while).</span> |
| <span class="source-line-no">696</span><span id="line-696"> * @param tableName table to compact</span> |
| <span class="source-line-no">697</span><span id="line-697"> * @param columnFamily column family within a table</span> |
| <span class="source-line-no">698</span><span id="line-698"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">699</span><span id="line-699"> * @throws IOException if not a mob column family or if a remote or network exception occurs</span> |
| <span class="source-line-no">700</span><span id="line-700"> */</span> |
| <span class="source-line-no">701</span><span id="line-701"> void majorCompact(TableName tableName, byte[] columnFamily, CompactType compactType)</span> |
| <span class="source-line-no">702</span><span id="line-702"> throws IOException, InterruptedException;</span> |
| <span class="source-line-no">703</span><span id="line-703"></span> |
| <span class="source-line-no">704</span><span id="line-704"> /**</span> |
| <span class="source-line-no">705</span><span id="line-705"> * Turn the compaction on or off. Disabling compactions will also interrupt any currently ongoing</span> |
| <span class="source-line-no">706</span><span id="line-706"> * compactions. This state is ephemeral. The setting will be lost on restart. Compaction can also</span> |
| <span class="source-line-no">707</span><span id="line-707"> * be enabled/disabled by modifying configuration hbase.regionserver.compaction.enabled in</span> |
| <span class="source-line-no">708</span><span id="line-708"> * hbase-site.xml.</span> |
| <span class="source-line-no">709</span><span id="line-709"> * @param switchState Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">710</span><span id="line-710"> * @param serverNamesList list of region servers.</span> |
| <span class="source-line-no">711</span><span id="line-711"> * @return Previous compaction states for region servers</span> |
| <span class="source-line-no">712</span><span id="line-712"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">713</span><span id="line-713"> */</span> |
| <span class="source-line-no">714</span><span id="line-714"> Map<ServerName, Boolean> compactionSwitch(boolean switchState, List<String> serverNamesList)</span> |
| <span class="source-line-no">715</span><span id="line-715"> throws IOException;</span> |
| <span class="source-line-no">716</span><span id="line-716"></span> |
| <span class="source-line-no">717</span><span id="line-717"> /**</span> |
| <span class="source-line-no">718</span><span id="line-718"> * Compact all regions on the region server. Asynchronous operation in that this method requests</span> |
| <span class="source-line-no">719</span><span id="line-719"> * that a Compaction run and then it returns. It does not wait on the completion of Compaction (it</span> |
| <span class="source-line-no">720</span><span id="line-720"> * can take a while).</span> |
| <span class="source-line-no">721</span><span id="line-721"> * @param serverName the region server name</span> |
| <span class="source-line-no">722</span><span id="line-722"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">723</span><span id="line-723"> */</span> |
| <span class="source-line-no">724</span><span id="line-724"> void compactRegionServer(ServerName serverName) throws IOException;</span> |
| <span class="source-line-no">725</span><span id="line-725"></span> |
| <span class="source-line-no">726</span><span id="line-726"> /**</span> |
| <span class="source-line-no">727</span><span id="line-727"> * Major compact all regions on the region server. Asynchronous operation in that this method</span> |
| <span class="source-line-no">728</span><span id="line-728"> * requests that a Compaction run and then it returns. It does not wait on the completion of</span> |
| <span class="source-line-no">729</span><span id="line-729"> * Compaction (it can take a while).</span> |
| <span class="source-line-no">730</span><span id="line-730"> * @param serverName the region server name</span> |
| <span class="source-line-no">731</span><span id="line-731"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">732</span><span id="line-732"> */</span> |
| <span class="source-line-no">733</span><span id="line-733"> void majorCompactRegionServer(ServerName serverName) throws IOException;</span> |
| <span class="source-line-no">734</span><span id="line-734"></span> |
| <span class="source-line-no">735</span><span id="line-735"> /**</span> |
| <span class="source-line-no">736</span><span id="line-736"> * Move the region <code>encodedRegionName</code> to a random server.</span> |
| <span class="source-line-no">737</span><span id="line-737"> * @param encodedRegionName The encoded region name; i.e. the hash that makes up the region name</span> |
| <span class="source-line-no">738</span><span id="line-738"> * suffix: e.g. if regionname is</span> |
| <span class="source-line-no">739</span><span id="line-739"> * <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>,</span> |
| <span class="source-line-no">740</span><span id="line-740"> * then the encoded region name is:</span> |
| <span class="source-line-no">741</span><span id="line-741"> * <code>527db22f95c8a9e0116f0cc13c680396</code>.</span> |
| <span class="source-line-no">742</span><span id="line-742"> * @throws IOException if we can't find a region named <code>encodedRegionName</code></span> |
| <span class="source-line-no">743</span><span id="line-743"> */</span> |
| <span class="source-line-no">744</span><span id="line-744"> void move(byte[] encodedRegionName) throws IOException;</span> |
| <span class="source-line-no">745</span><span id="line-745"></span> |
| <span class="source-line-no">746</span><span id="line-746"> /**</span> |
| <span class="source-line-no">747</span><span id="line-747"> * Move the region <code>rencodedRegionName</code> to <code>destServerName</code>.</span> |
| <span class="source-line-no">748</span><span id="line-748"> * @param encodedRegionName The encoded region name; i.e. the hash that makes up the region name</span> |
| <span class="source-line-no">749</span><span id="line-749"> * suffix: e.g. if regionname is</span> |
| <span class="source-line-no">750</span><span id="line-750"> * <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>,</span> |
| <span class="source-line-no">751</span><span id="line-751"> * then the encoded region name is:</span> |
| <span class="source-line-no">752</span><span id="line-752"> * <code>527db22f95c8a9e0116f0cc13c680396</code>.</span> |
| <span class="source-line-no">753</span><span id="line-753"> * @param destServerName The servername of the destination regionserver. If passed the empty</span> |
| <span class="source-line-no">754</span><span id="line-754"> * byte array we'll assign to a random server. A server name is made of</span> |
| <span class="source-line-no">755</span><span id="line-755"> * host, port and startcode. Here is an example:</span> |
| <span class="source-line-no">756</span><span id="line-756"> * <code> host187.example.com,60020,1289493121758</code></span> |
| <span class="source-line-no">757</span><span id="line-757"> * @throws IOException if we can't find a region named <code>encodedRegionName</code></span> |
| <span class="source-line-no">758</span><span id="line-758"> * @deprecated since 2.2.0 and will be removed in 4.0.0. Use {@link #move(byte[], ServerName)}</span> |
| <span class="source-line-no">759</span><span id="line-759"> * instead. And if you want to move the region to a random server, please use</span> |
| <span class="source-line-no">760</span><span id="line-760"> * {@link #move(byte[])}.</span> |
| <span class="source-line-no">761</span><span id="line-761"> * @see <a href="https://issues.apache.org/jira/browse/HBASE-22108">HBASE-22108</a></span> |
| <span class="source-line-no">762</span><span id="line-762"> */</span> |
| <span class="source-line-no">763</span><span id="line-763"> @Deprecated</span> |
| <span class="source-line-no">764</span><span id="line-764"> default void move(byte[] encodedRegionName, byte[] destServerName) throws IOException {</span> |
| <span class="source-line-no">765</span><span id="line-765"> if (destServerName == null || destServerName.length == 0) {</span> |
| <span class="source-line-no">766</span><span id="line-766"> move(encodedRegionName);</span> |
| <span class="source-line-no">767</span><span id="line-767"> } else {</span> |
| <span class="source-line-no">768</span><span id="line-768"> move(encodedRegionName, ServerName.valueOf(Bytes.toString(destServerName)));</span> |
| <span class="source-line-no">769</span><span id="line-769"> }</span> |
| <span class="source-line-no">770</span><span id="line-770"> }</span> |
| <span class="source-line-no">771</span><span id="line-771"></span> |
| <span class="source-line-no">772</span><span id="line-772"> /**</span> |
| <span class="source-line-no">773</span><span id="line-773"> * Move the region <code>encodedRegionName</code> to <code>destServerName</code>.</span> |
| <span class="source-line-no">774</span><span id="line-774"> * @param encodedRegionName The encoded region name; i.e. the hash that makes up the region name</span> |
| <span class="source-line-no">775</span><span id="line-775"> * suffix: e.g. if regionname is</span> |
| <span class="source-line-no">776</span><span id="line-776"> * <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>,</span> |
| <span class="source-line-no">777</span><span id="line-777"> * then the encoded region name is:</span> |
| <span class="source-line-no">778</span><span id="line-778"> * <code>527db22f95c8a9e0116f0cc13c680396</code>.</span> |
| <span class="source-line-no">779</span><span id="line-779"> * @param destServerName The servername of the destination regionserver. A server name is made</span> |
| <span class="source-line-no">780</span><span id="line-780"> * of host, port and startcode. Here is an example:</span> |
| <span class="source-line-no">781</span><span id="line-781"> * <code> host187.example.com,60020,1289493121758</code></span> |
| <span class="source-line-no">782</span><span id="line-782"> * @throws IOException if we can't find a region named <code>encodedRegionName</code></span> |
| <span class="source-line-no">783</span><span id="line-783"> */</span> |
| <span class="source-line-no">784</span><span id="line-784"> void move(byte[] encodedRegionName, ServerName destServerName) throws IOException;</span> |
| <span class="source-line-no">785</span><span id="line-785"></span> |
| <span class="source-line-no">786</span><span id="line-786"> /**</span> |
| <span class="source-line-no">787</span><span id="line-787"> * Assign a Region.</span> |
| <span class="source-line-no">788</span><span id="line-788"> * @param regionName Region name to assign.</span> |
| <span class="source-line-no">789</span><span id="line-789"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">790</span><span id="line-790"> */</span> |
| <span class="source-line-no">791</span><span id="line-791"> void assign(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">792</span><span id="line-792"></span> |
| <span class="source-line-no">793</span><span id="line-793"> /**</span> |
| <span class="source-line-no">794</span><span id="line-794"> * Unassign a Region.</span> |
| <span class="source-line-no">795</span><span id="line-795"> * @param regionName Region name to unassign.</span> |
| <span class="source-line-no">796</span><span id="line-796"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">797</span><span id="line-797"> */</span> |
| <span class="source-line-no">798</span><span id="line-798"> void unassign(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">799</span><span id="line-799"></span> |
| <span class="source-line-no">800</span><span id="line-800"> /**</span> |
| <span class="source-line-no">801</span><span id="line-801"> * Unassign a region from current hosting regionserver. Region will then be assigned to a</span> |
| <span class="source-line-no">802</span><span id="line-802"> * regionserver chosen at random. Region could be reassigned back to the same server. Use</span> |
| <span class="source-line-no">803</span><span id="line-803"> * {@link #move(byte[], ServerName)} if you want to control the region movement.</span> |
| <span class="source-line-no">804</span><span id="line-804"> * @param regionName Region to unassign. Will clear any existing RegionPlan if one found.</span> |
| <span class="source-line-no">805</span><span id="line-805"> * @param force If <code>true</code>, force unassign (Will remove region from</span> |
| <span class="source-line-no">806</span><span id="line-806"> * regions-in-transition too if present. If results in double assignment use</span> |
| <span class="source-line-no">807</span><span id="line-807"> * hbck -fix to resolve. To be used by experts).</span> |
| <span class="source-line-no">808</span><span id="line-808"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">809</span><span id="line-809"> * @deprecated since 2.4.0 and will be removed in 4.0.0. Use {@link #unassign(byte[])} instead.</span> |
| <span class="source-line-no">810</span><span id="line-810"> * @see <a href="https://issues.apache.org/jira/browse/HBASE-24875">HBASE-24875</a></span> |
| <span class="source-line-no">811</span><span id="line-811"> */</span> |
| <span class="source-line-no">812</span><span id="line-812"> @Deprecated</span> |
| <span class="source-line-no">813</span><span id="line-813"> default void unassign(byte[] regionName, boolean force) throws IOException {</span> |
| <span class="source-line-no">814</span><span id="line-814"> unassign(regionName);</span> |
| <span class="source-line-no">815</span><span id="line-815"> }</span> |
| <span class="source-line-no">816</span><span id="line-816"></span> |
| <span class="source-line-no">817</span><span id="line-817"> /**</span> |
| <span class="source-line-no">818</span><span id="line-818"> * Offline specified region from master's in-memory state. It will not attempt to reassign the</span> |
| <span class="source-line-no">819</span><span id="line-819"> * region as in unassign. This API can be used when a region not served by any region server and</span> |
| <span class="source-line-no">820</span><span id="line-820"> * still online as per Master's in memory state. If this API is incorrectly used on active region</span> |
| <span class="source-line-no">821</span><span id="line-821"> * then master will loose track of that region. This is a special method that should be used by</span> |
| <span class="source-line-no">822</span><span id="line-822"> * experts or hbck.</span> |
| <span class="source-line-no">823</span><span id="line-823"> * @param regionName Region to offline.</span> |
| <span class="source-line-no">824</span><span id="line-824"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">825</span><span id="line-825"> */</span> |
| <span class="source-line-no">826</span><span id="line-826"> void offline(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">827</span><span id="line-827"></span> |
| <span class="source-line-no">828</span><span id="line-828"> /**</span> |
| <span class="source-line-no">829</span><span id="line-829"> * Turn the load balancer on or off.</span> |
| <span class="source-line-no">830</span><span id="line-830"> * @param onOrOff Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">831</span><span id="line-831"> * @param synchronous If <code>true</code>, it waits until current balance() call, if outstanding,</span> |
| <span class="source-line-no">832</span><span id="line-832"> * to return.</span> |
| <span class="source-line-no">833</span><span id="line-833"> * @return Previous balancer value</span> |
| <span class="source-line-no">834</span><span id="line-834"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">835</span><span id="line-835"> */</span> |
| <span class="source-line-no">836</span><span id="line-836"> boolean balancerSwitch(boolean onOrOff, boolean synchronous) throws IOException;</span> |
| <span class="source-line-no">837</span><span id="line-837"></span> |
| <span class="source-line-no">838</span><span id="line-838"> /**</span> |
| <span class="source-line-no">839</span><span id="line-839"> * Invoke the balancer. Will run the balancer and if regions to move, it will go ahead and do the</span> |
| <span class="source-line-no">840</span><span id="line-840"> * reassignments. Can NOT run for various reasons. Check logs.</span> |
| <span class="source-line-no">841</span><span id="line-841"> * @return <code>true</code> if balancer ran, <code>false</code> otherwise.</span> |
| <span class="source-line-no">842</span><span id="line-842"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">843</span><span id="line-843"> */</span> |
| <span class="source-line-no">844</span><span id="line-844"> default boolean balance() throws IOException {</span> |
| <span class="source-line-no">845</span><span id="line-845"> return balance(BalanceRequest.defaultInstance()).isBalancerRan();</span> |
| <span class="source-line-no">846</span><span id="line-846"> }</span> |
| <span class="source-line-no">847</span><span id="line-847"></span> |
| <span class="source-line-no">848</span><span id="line-848"> /**</span> |
| <span class="source-line-no">849</span><span id="line-849"> * Invoke the balancer with the given balance request. The BalanceRequest defines how the balancer</span> |
| <span class="source-line-no">850</span><span id="line-850"> * will run. See {@link BalanceRequest} for more details.</span> |
| <span class="source-line-no">851</span><span id="line-851"> * @param request defines how the balancer should run</span> |
| <span class="source-line-no">852</span><span id="line-852"> * @return {@link BalanceResponse} with details about the results of the invocation.</span> |
| <span class="source-line-no">853</span><span id="line-853"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">854</span><span id="line-854"> */</span> |
| <span class="source-line-no">855</span><span id="line-855"> BalanceResponse balance(BalanceRequest request) throws IOException;</span> |
| <span class="source-line-no">856</span><span id="line-856"></span> |
| <span class="source-line-no">857</span><span id="line-857"> /**</span> |
| <span class="source-line-no">858</span><span id="line-858"> * Invoke the balancer. Will run the balancer and if regions to move, it will go ahead and do the</span> |
| <span class="source-line-no">859</span><span id="line-859"> * reassignments. If there is region in transition, force parameter of true would still run</span> |
| <span class="source-line-no">860</span><span id="line-860"> * balancer. Can *not* run for other reasons. Check logs.</span> |
| <span class="source-line-no">861</span><span id="line-861"> * @param force whether we should force balance even if there is region in transition</span> |
| <span class="source-line-no">862</span><span id="line-862"> * @return <code>true</code> if balancer ran, <code>false</code> otherwise.</span> |
| <span class="source-line-no">863</span><span id="line-863"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">864</span><span id="line-864"> * @deprecated Since 2.5.0. Will be removed in 4.0.0. Use {@link #balance(BalanceRequest)}</span> |
| <span class="source-line-no">865</span><span id="line-865"> * instead.</span> |
| <span class="source-line-no">866</span><span id="line-866"> */</span> |
| <span class="source-line-no">867</span><span id="line-867"> @Deprecated</span> |
| <span class="source-line-no">868</span><span id="line-868"> default boolean balance(boolean force) throws IOException {</span> |
| <span class="source-line-no">869</span><span id="line-869"> return balance(BalanceRequest.newBuilder().setIgnoreRegionsInTransition(force).build())</span> |
| <span class="source-line-no">870</span><span id="line-870"> .isBalancerRan();</span> |
| <span class="source-line-no">871</span><span id="line-871"> }</span> |
| <span class="source-line-no">872</span><span id="line-872"></span> |
| <span class="source-line-no">873</span><span id="line-873"> /**</span> |
| <span class="source-line-no">874</span><span id="line-874"> * Query the current state of the balancer.</span> |
| <span class="source-line-no">875</span><span id="line-875"> * @return <code>true</code> if the balancer is enabled, <code>false</code> otherwise.</span> |
| <span class="source-line-no">876</span><span id="line-876"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">877</span><span id="line-877"> */</span> |
| <span class="source-line-no">878</span><span id="line-878"> boolean isBalancerEnabled() throws IOException;</span> |
| <span class="source-line-no">879</span><span id="line-879"></span> |
| <span class="source-line-no">880</span><span id="line-880"> /**</span> |
| <span class="source-line-no">881</span><span id="line-881"> * Clear all the blocks corresponding to this table from BlockCache. For expert-admins. Calling</span> |
| <span class="source-line-no">882</span><span id="line-882"> * this API will drop all the cached blocks specific to a table from BlockCache. This can</span> |
| <span class="source-line-no">883</span><span id="line-883"> * significantly impact the query performance as the subsequent queries will have to retrieve the</span> |
| <span class="source-line-no">884</span><span id="line-884"> * blocks from underlying filesystem.</span> |
| <span class="source-line-no">885</span><span id="line-885"> * @param tableName table to clear block cache</span> |
| <span class="source-line-no">886</span><span id="line-886"> * @return CacheEvictionStats related to the eviction</span> |
| <span class="source-line-no">887</span><span id="line-887"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">888</span><span id="line-888"> */</span> |
| <span class="source-line-no">889</span><span id="line-889"> CacheEvictionStats clearBlockCache(final TableName tableName) throws IOException;</span> |
| <span class="source-line-no">890</span><span id="line-890"></span> |
| <span class="source-line-no">891</span><span id="line-891"> /**</span> |
| <span class="source-line-no">892</span><span id="line-892"> * Invoke region normalizer. Can NOT run for various reasons. Check logs. This is a non-blocking</span> |
| <span class="source-line-no">893</span><span id="line-893"> * invocation to region normalizer. If return value is true, it means the request was submitted</span> |
| <span class="source-line-no">894</span><span id="line-894"> * successfully. We need to check logs for the details of which regions were split/merged.</span> |
| <span class="source-line-no">895</span><span id="line-895"> * @return {@code true} if region normalizer ran, {@code false} otherwise.</span> |
| <span class="source-line-no">896</span><span id="line-896"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">897</span><span id="line-897"> */</span> |
| <span class="source-line-no">898</span><span id="line-898"> default boolean normalize() throws IOException {</span> |
| <span class="source-line-no">899</span><span id="line-899"> return normalize(new NormalizeTableFilterParams.Builder().build());</span> |
| <span class="source-line-no">900</span><span id="line-900"> }</span> |
| <span class="source-line-no">901</span><span id="line-901"></span> |
| <span class="source-line-no">902</span><span id="line-902"> /**</span> |
| <span class="source-line-no">903</span><span id="line-903"> * Invoke region normalizer. Can NOT run for various reasons. Check logs. This is a non-blocking</span> |
| <span class="source-line-no">904</span><span id="line-904"> * invocation to region normalizer. If return value is true, it means the request was submitted</span> |
| <span class="source-line-no">905</span><span id="line-905"> * successfully. We need to check logs for the details of which regions were split/merged.</span> |
| <span class="source-line-no">906</span><span id="line-906"> * @param ntfp limit to tables matching the specified filter.</span> |
| <span class="source-line-no">907</span><span id="line-907"> * @return {@code true} if region normalizer ran, {@code false} otherwise.</span> |
| <span class="source-line-no">908</span><span id="line-908"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">909</span><span id="line-909"> */</span> |
| <span class="source-line-no">910</span><span id="line-910"> boolean normalize(NormalizeTableFilterParams ntfp) throws IOException;</span> |
| <span class="source-line-no">911</span><span id="line-911"></span> |
| <span class="source-line-no">912</span><span id="line-912"> /**</span> |
| <span class="source-line-no">913</span><span id="line-913"> * Query the current state of the region normalizer.</span> |
| <span class="source-line-no">914</span><span id="line-914"> * @return <code>true</code> if region normalizer is enabled, <code>false</code> otherwise.</span> |
| <span class="source-line-no">915</span><span id="line-915"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">916</span><span id="line-916"> */</span> |
| <span class="source-line-no">917</span><span id="line-917"> boolean isNormalizerEnabled() throws IOException;</span> |
| <span class="source-line-no">918</span><span id="line-918"></span> |
| <span class="source-line-no">919</span><span id="line-919"> /**</span> |
| <span class="source-line-no">920</span><span id="line-920"> * Turn region normalizer on or off.</span> |
| <span class="source-line-no">921</span><span id="line-921"> * @return Previous normalizer value</span> |
| <span class="source-line-no">922</span><span id="line-922"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">923</span><span id="line-923"> */</span> |
| <span class="source-line-no">924</span><span id="line-924"> boolean normalizerSwitch(boolean on) throws IOException;</span> |
| <span class="source-line-no">925</span><span id="line-925"></span> |
| <span class="source-line-no">926</span><span id="line-926"> /**</span> |
| <span class="source-line-no">927</span><span id="line-927"> * Enable/Disable the catalog janitor/</span> |
| <span class="source-line-no">928</span><span id="line-928"> * @param onOrOff if <code>true</code> enables the catalog janitor</span> |
| <span class="source-line-no">929</span><span id="line-929"> * @return the previous state</span> |
| <span class="source-line-no">930</span><span id="line-930"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">931</span><span id="line-931"> */</span> |
| <span class="source-line-no">932</span><span id="line-932"> boolean catalogJanitorSwitch(boolean onOrOff) throws IOException;</span> |
| <span class="source-line-no">933</span><span id="line-933"></span> |
| <span class="source-line-no">934</span><span id="line-934"> /**</span> |
| <span class="source-line-no">935</span><span id="line-935"> * Ask for a scan of the catalog table.</span> |
| <span class="source-line-no">936</span><span id="line-936"> * @return the number of entries cleaned. Returns -1 if previous run is in progress.</span> |
| <span class="source-line-no">937</span><span id="line-937"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">938</span><span id="line-938"> */</span> |
| <span class="source-line-no">939</span><span id="line-939"> int runCatalogJanitor() throws IOException;</span> |
| <span class="source-line-no">940</span><span id="line-940"></span> |
| <span class="source-line-no">941</span><span id="line-941"> /**</span> |
| <span class="source-line-no">942</span><span id="line-942"> * Query on the catalog janitor state (Enabled/Disabled?).</span> |
| <span class="source-line-no">943</span><span id="line-943"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">944</span><span id="line-944"> */</span> |
| <span class="source-line-no">945</span><span id="line-945"> boolean isCatalogJanitorEnabled() throws IOException;</span> |
| <span class="source-line-no">946</span><span id="line-946"></span> |
| <span class="source-line-no">947</span><span id="line-947"> /**</span> |
| <span class="source-line-no">948</span><span id="line-948"> * Enable/Disable the cleaner chore.</span> |
| <span class="source-line-no">949</span><span id="line-949"> * @param onOrOff if <code>true</code> enables the cleaner chore</span> |
| <span class="source-line-no">950</span><span id="line-950"> * @return the previous state</span> |
| <span class="source-line-no">951</span><span id="line-951"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">952</span><span id="line-952"> */</span> |
| <span class="source-line-no">953</span><span id="line-953"> boolean cleanerChoreSwitch(boolean onOrOff) throws IOException;</span> |
| <span class="source-line-no">954</span><span id="line-954"></span> |
| <span class="source-line-no">955</span><span id="line-955"> /**</span> |
| <span class="source-line-no">956</span><span id="line-956"> * Ask for cleaner chore to run.</span> |
| <span class="source-line-no">957</span><span id="line-957"> * @return <code>true</code> if cleaner chore ran, <code>false</code> otherwise</span> |
| <span class="source-line-no">958</span><span id="line-958"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">959</span><span id="line-959"> */</span> |
| <span class="source-line-no">960</span><span id="line-960"> boolean runCleanerChore() throws IOException;</span> |
| <span class="source-line-no">961</span><span id="line-961"></span> |
| <span class="source-line-no">962</span><span id="line-962"> /**</span> |
| <span class="source-line-no">963</span><span id="line-963"> * Query on the cleaner chore state (Enabled/Disabled?).</span> |
| <span class="source-line-no">964</span><span id="line-964"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">965</span><span id="line-965"> */</span> |
| <span class="source-line-no">966</span><span id="line-966"> boolean isCleanerChoreEnabled() throws IOException;</span> |
| <span class="source-line-no">967</span><span id="line-967"></span> |
| <span class="source-line-no">968</span><span id="line-968"> /**</span> |
| <span class="source-line-no">969</span><span id="line-969"> * Merge two regions. Asynchronous operation.</span> |
| <span class="source-line-no">970</span><span id="line-970"> * @param nameOfRegionA encoded or full name of region a</span> |
| <span class="source-line-no">971</span><span id="line-971"> * @param nameOfRegionB encoded or full name of region b</span> |
| <span class="source-line-no">972</span><span id="line-972"> * @param forcible <code>true</code> if do a compulsory merge, otherwise we will only merge</span> |
| <span class="source-line-no">973</span><span id="line-973"> * two adjacent regions</span> |
| <span class="source-line-no">974</span><span id="line-974"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">975</span><span id="line-975"> * @deprecated since 2.3.0 and will be removed in 4.0.0. Multi-region merge feature is now</span> |
| <span class="source-line-no">976</span><span id="line-976"> * supported. Use {@link #mergeRegionsAsync(byte[][], boolean)} instead.</span> |
| <span class="source-line-no">977</span><span id="line-977"> */</span> |
| <span class="source-line-no">978</span><span id="line-978"> @Deprecated</span> |
| <span class="source-line-no">979</span><span id="line-979"> default Future<Void> mergeRegionsAsync(byte[] nameOfRegionA, byte[] nameOfRegionB,</span> |
| <span class="source-line-no">980</span><span id="line-980"> boolean forcible) throws IOException {</span> |
| <span class="source-line-no">981</span><span id="line-981"> byte[][] nameofRegionsToMerge = new byte[2][];</span> |
| <span class="source-line-no">982</span><span id="line-982"> nameofRegionsToMerge[0] = nameOfRegionA;</span> |
| <span class="source-line-no">983</span><span id="line-983"> nameofRegionsToMerge[1] = nameOfRegionB;</span> |
| <span class="source-line-no">984</span><span id="line-984"> return mergeRegionsAsync(nameofRegionsToMerge, forcible);</span> |
| <span class="source-line-no">985</span><span id="line-985"> }</span> |
| <span class="source-line-no">986</span><span id="line-986"></span> |
| <span class="source-line-no">987</span><span id="line-987"> /**</span> |
| <span class="source-line-no">988</span><span id="line-988"> * Merge multiple regions (>=2). Asynchronous operation.</span> |
| <span class="source-line-no">989</span><span id="line-989"> * @param nameofRegionsToMerge encoded or full name of daughter regions</span> |
| <span class="source-line-no">990</span><span id="line-990"> * @param forcible <code>true</code> if do a compulsory merge, otherwise we will only</span> |
| <span class="source-line-no">991</span><span id="line-991"> * merge adjacent regions</span> |
| <span class="source-line-no">992</span><span id="line-992"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">993</span><span id="line-993"> */</span> |
| <span class="source-line-no">994</span><span id="line-994"> Future<Void> mergeRegionsAsync(byte[][] nameofRegionsToMerge, boolean forcible)</span> |
| <span class="source-line-no">995</span><span id="line-995"> throws IOException;</span> |
| <span class="source-line-no">996</span><span id="line-996"></span> |
| <span class="source-line-no">997</span><span id="line-997"> /**</span> |
| <span class="source-line-no">998</span><span id="line-998"> * Split a table. The method will execute split action for each region in table.</span> |
| <span class="source-line-no">999</span><span id="line-999"> * @param tableName table to split</span> |
| <span class="source-line-no">1000</span><span id="line-1000"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1001</span><span id="line-1001"> */</span> |
| <span class="source-line-no">1002</span><span id="line-1002"> void split(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">1003</span><span id="line-1003"></span> |
| <span class="source-line-no">1004</span><span id="line-1004"> /**</span> |
| <span class="source-line-no">1005</span><span id="line-1005"> * Split a table.</span> |
| <span class="source-line-no">1006</span><span id="line-1006"> * @param tableName table to split</span> |
| <span class="source-line-no">1007</span><span id="line-1007"> * @param splitPoint the explicit position to split on</span> |
| <span class="source-line-no">1008</span><span id="line-1008"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1009</span><span id="line-1009"> */</span> |
| <span class="source-line-no">1010</span><span id="line-1010"> void split(TableName tableName, byte[] splitPoint) throws IOException;</span> |
| <span class="source-line-no">1011</span><span id="line-1011"></span> |
| <span class="source-line-no">1012</span><span id="line-1012"> /**</span> |
| <span class="source-line-no">1013</span><span id="line-1013"> * Split an individual region. Asynchronous operation.</span> |
| <span class="source-line-no">1014</span><span id="line-1014"> * @param regionName region to split</span> |
| <span class="source-line-no">1015</span><span id="line-1015"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1016</span><span id="line-1016"> */</span> |
| <span class="source-line-no">1017</span><span id="line-1017"> Future<Void> splitRegionAsync(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">1018</span><span id="line-1018"></span> |
| <span class="source-line-no">1019</span><span id="line-1019"> /**</span> |
| <span class="source-line-no">1020</span><span id="line-1020"> * Split an individual region. Asynchronous operation.</span> |
| <span class="source-line-no">1021</span><span id="line-1021"> * @param regionName region to split</span> |
| <span class="source-line-no">1022</span><span id="line-1022"> * @param splitPoint the explicit position to split on</span> |
| <span class="source-line-no">1023</span><span id="line-1023"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1024</span><span id="line-1024"> */</span> |
| <span class="source-line-no">1025</span><span id="line-1025"> Future<Void> splitRegionAsync(byte[] regionName, byte[] splitPoint) throws IOException;</span> |
| <span class="source-line-no">1026</span><span id="line-1026"></span> |
| <span class="source-line-no">1027</span><span id="line-1027"> /**</span> |
| <span class="source-line-no">1028</span><span id="line-1028"> * Modify an existing table, more IRB friendly version.</span> |
| <span class="source-line-no">1029</span><span id="line-1029"> * @param td modified description of the table</span> |
| <span class="source-line-no">1030</span><span id="line-1030"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1031</span><span id="line-1031"> */</span> |
| <span class="source-line-no">1032</span><span id="line-1032"> default void modifyTable(TableDescriptor td) throws IOException {</span> |
| <span class="source-line-no">1033</span><span id="line-1033"> get(modifyTableAsync(td), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1034</span><span id="line-1034"> }</span> |
| <span class="source-line-no">1035</span><span id="line-1035"></span> |
| <span class="source-line-no">1036</span><span id="line-1036"> /**</span> |
| <span class="source-line-no">1037</span><span id="line-1037"> * Truncate an individual region.</span> |
| <span class="source-line-no">1038</span><span id="line-1038"> * @param regionName region to truncate</span> |
| <span class="source-line-no">1039</span><span id="line-1039"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1040</span><span id="line-1040"> */</span> |
| <span class="source-line-no">1041</span><span id="line-1041"> void truncateRegion(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">1042</span><span id="line-1042"></span> |
| <span class="source-line-no">1043</span><span id="line-1043"> /**</span> |
| <span class="source-line-no">1044</span><span id="line-1044"> * Truncate an individual region. Asynchronous operation.</span> |
| <span class="source-line-no">1045</span><span id="line-1045"> * @param regionName region to truncate</span> |
| <span class="source-line-no">1046</span><span id="line-1046"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1047</span><span id="line-1047"> */</span> |
| <span class="source-line-no">1048</span><span id="line-1048"> Future<Void> truncateRegionAsync(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">1049</span><span id="line-1049"></span> |
| <span class="source-line-no">1050</span><span id="line-1050"> /**</span> |
| <span class="source-line-no">1051</span><span id="line-1051"> * Modify an existing table, more IRB (ruby) friendly version. Asynchronous operation. This means</span> |
| <span class="source-line-no">1052</span><span id="line-1052"> * that it may be a while before your schema change is updated across all of the table. You can</span> |
| <span class="source-line-no">1053</span><span id="line-1053"> * use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">1054</span><span id="line-1054"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">1055</span><span id="line-1055"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">1056</span><span id="line-1056"> * @param td description of the table</span> |
| <span class="source-line-no">1057</span><span id="line-1057"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1058</span><span id="line-1058"> * @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">1059</span><span id="line-1059"> * operation to complete</span> |
| <span class="source-line-no">1060</span><span id="line-1060"> */</span> |
| <span class="source-line-no">1061</span><span id="line-1061"> default Future<Void> modifyTableAsync(TableDescriptor td) throws IOException {</span> |
| <span class="source-line-no">1062</span><span id="line-1062"> return modifyTableAsync(td, true);</span> |
| <span class="source-line-no">1063</span><span id="line-1063"> }</span> |
| <span class="source-line-no">1064</span><span id="line-1064"></span> |
| <span class="source-line-no">1065</span><span id="line-1065"> /**</span> |
| <span class="source-line-no">1066</span><span id="line-1066"> * The same as {@link #modifyTableAsync(TableDescriptor td)}, except for the reopenRegions</span> |
| <span class="source-line-no">1067</span><span id="line-1067"> * parameter, which controls whether the process of modifying the table should reopen all regions.</span> |
| <span class="source-line-no">1068</span><span id="line-1068"> * @param td description of the table</span> |
| <span class="source-line-no">1069</span><span id="line-1069"> * @param reopenRegions By default, 'modifyTable' reopens all regions, potentially causing a RIT</span> |
| <span class="source-line-no">1070</span><span id="line-1070"> * (Region In Transition) storm in large tables. If set to 'false', regions</span> |
| <span class="source-line-no">1071</span><span id="line-1071"> * will remain unaware of the modification until they are individually</span> |
| <span class="source-line-no">1072</span><span id="line-1072"> * reopened. Please note that this may temporarily result in configuration</span> |
| <span class="source-line-no">1073</span><span id="line-1073"> * inconsistencies among regions.</span> |
| <span class="source-line-no">1074</span><span id="line-1074"> * @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">1075</span><span id="line-1075"> * operation to complete</span> |
| <span class="source-line-no">1076</span><span id="line-1076"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1077</span><span id="line-1077"> */</span> |
| <span class="source-line-no">1078</span><span id="line-1078"> Future<Void> modifyTableAsync(TableDescriptor td, boolean reopenRegions) throws IOException;</span> |
| <span class="source-line-no">1079</span><span id="line-1079"></span> |
| <span class="source-line-no">1080</span><span id="line-1080"> /**</span> |
| <span class="source-line-no">1081</span><span id="line-1081"> * Change the store file tracker of the given table.</span> |
| <span class="source-line-no">1082</span><span id="line-1082"> * @param tableName the table you want to change</span> |
| <span class="source-line-no">1083</span><span id="line-1083"> * @param dstSFT the destination store file tracker</span> |
| <span class="source-line-no">1084</span><span id="line-1084"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1085</span><span id="line-1085"> */</span> |
| <span class="source-line-no">1086</span><span id="line-1086"> default void modifyTableStoreFileTracker(TableName tableName, String dstSFT) throws IOException {</span> |
| <span class="source-line-no">1087</span><span id="line-1087"> get(modifyTableStoreFileTrackerAsync(tableName, dstSFT), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">1088</span><span id="line-1088"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1089</span><span id="line-1089"> }</span> |
| <span class="source-line-no">1090</span><span id="line-1090"></span> |
| <span class="source-line-no">1091</span><span id="line-1091"> /**</span> |
| <span class="source-line-no">1092</span><span id="line-1092"> * Change the store file tracker of the given table.</span> |
| <span class="source-line-no">1093</span><span id="line-1093"> * @param tableName the table you want to change</span> |
| <span class="source-line-no">1094</span><span id="line-1094"> * @param dstSFT the destination store file tracker</span> |
| <span class="source-line-no">1095</span><span id="line-1095"> * @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the</span> |
| <span class="source-line-no">1096</span><span id="line-1096"> * operation to complete</span> |
| <span class="source-line-no">1097</span><span id="line-1097"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1098</span><span id="line-1098"> */</span> |
| <span class="source-line-no">1099</span><span id="line-1099"> Future<Void> modifyTableStoreFileTrackerAsync(TableName tableName, String dstSFT)</span> |
| <span class="source-line-no">1100</span><span id="line-1100"> throws IOException;</span> |
| <span class="source-line-no">1101</span><span id="line-1101"></span> |
| <span class="source-line-no">1102</span><span id="line-1102"> /**</span> |
| <span class="source-line-no">1103</span><span id="line-1103"> * Shuts down the HBase cluster.</span> |
| <span class="source-line-no">1104</span><span id="line-1104"> * <p/></span> |
| <span class="source-line-no">1105</span><span id="line-1105"> * Notice that, a success shutdown call may ends with an error since the remote server has already</span> |
| <span class="source-line-no">1106</span><span id="line-1106"> * been shutdown.</span> |
| <span class="source-line-no">1107</span><span id="line-1107"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1108</span><span id="line-1108"> */</span> |
| <span class="source-line-no">1109</span><span id="line-1109"> void shutdown() throws IOException;</span> |
| <span class="source-line-no">1110</span><span id="line-1110"></span> |
| <span class="source-line-no">1111</span><span id="line-1111"> /**</span> |
| <span class="source-line-no">1112</span><span id="line-1112"> * Shuts down the current HBase master only. Does not shutdown the cluster.</span> |
| <span class="source-line-no">1113</span><span id="line-1113"> * <p/></span> |
| <span class="source-line-no">1114</span><span id="line-1114"> * Notice that, a success stopMaster call may ends with an error since the remote server has</span> |
| <span class="source-line-no">1115</span><span id="line-1115"> * already been shutdown.</span> |
| <span class="source-line-no">1116</span><span id="line-1116"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1117</span><span id="line-1117"> * @see #shutdown()</span> |
| <span class="source-line-no">1118</span><span id="line-1118"> */</span> |
| <span class="source-line-no">1119</span><span id="line-1119"> void stopMaster() throws IOException;</span> |
| <span class="source-line-no">1120</span><span id="line-1120"></span> |
| <span class="source-line-no">1121</span><span id="line-1121"> /**</span> |
| <span class="source-line-no">1122</span><span id="line-1122"> * Check whether Master is in maintenance mode.</span> |
| <span class="source-line-no">1123</span><span id="line-1123"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1124</span><span id="line-1124"> */</span> |
| <span class="source-line-no">1125</span><span id="line-1125"> boolean isMasterInMaintenanceMode() throws IOException;</span> |
| <span class="source-line-no">1126</span><span id="line-1126"></span> |
| <span class="source-line-no">1127</span><span id="line-1127"> /**</span> |
| <span class="source-line-no">1128</span><span id="line-1128"> * Stop the designated regionserver.</span> |
| <span class="source-line-no">1129</span><span id="line-1129"> * @param hostnamePort Hostname and port delimited by a <code>:</code> as in</span> |
| <span class="source-line-no">1130</span><span id="line-1130"> * <code>example.org:1234</code></span> |
| <span class="source-line-no">1131</span><span id="line-1131"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1132</span><span id="line-1132"> */</span> |
| <span class="source-line-no">1133</span><span id="line-1133"> void stopRegionServer(String hostnamePort) throws IOException;</span> |
| <span class="source-line-no">1134</span><span id="line-1134"></span> |
| <span class="source-line-no">1135</span><span id="line-1135"> /**</span> |
| <span class="source-line-no">1136</span><span id="line-1136"> * Get whole cluster metrics, containing status about:</span> |
| <span class="source-line-no">1137</span><span id="line-1137"> *</span> |
| <span class="source-line-no">1138</span><span id="line-1138"> * <pre></span> |
| <span class="source-line-no">1139</span><span id="line-1139"> * hbase version</span> |
| <span class="source-line-no">1140</span><span id="line-1140"> * cluster id</span> |
| <span class="source-line-no">1141</span><span id="line-1141"> * primary/backup master(s)</span> |
| <span class="source-line-no">1142</span><span id="line-1142"> * master's coprocessors</span> |
| <span class="source-line-no">1143</span><span id="line-1143"> * live/dead regionservers</span> |
| <span class="source-line-no">1144</span><span id="line-1144"> * balancer</span> |
| <span class="source-line-no">1145</span><span id="line-1145"> * regions in transition</span> |
| <span class="source-line-no">1146</span><span id="line-1146"> * </pre></span> |
| <span class="source-line-no">1147</span><span id="line-1147"> *</span> |
| <span class="source-line-no">1148</span><span id="line-1148"> * @return cluster metrics</span> |
| <span class="source-line-no">1149</span><span id="line-1149"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1150</span><span id="line-1150"> */</span> |
| <span class="source-line-no">1151</span><span id="line-1151"> default ClusterMetrics getClusterMetrics() throws IOException {</span> |
| <span class="source-line-no">1152</span><span id="line-1152"> return getClusterMetrics(EnumSet.allOf(ClusterMetrics.Option.class));</span> |
| <span class="source-line-no">1153</span><span id="line-1153"> }</span> |
| <span class="source-line-no">1154</span><span id="line-1154"></span> |
| <span class="source-line-no">1155</span><span id="line-1155"> /**</span> |
| <span class="source-line-no">1156</span><span id="line-1156"> * Get cluster status with a set of {@link Option} to get desired status.</span> |
| <span class="source-line-no">1157</span><span id="line-1157"> * @return cluster status</span> |
| <span class="source-line-no">1158</span><span id="line-1158"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1159</span><span id="line-1159"> */</span> |
| <span class="source-line-no">1160</span><span id="line-1160"> ClusterMetrics getClusterMetrics(EnumSet<Option> options) throws IOException;</span> |
| <span class="source-line-no">1161</span><span id="line-1161"></span> |
| <span class="source-line-no">1162</span><span id="line-1162"> /**</span> |
| <span class="source-line-no">1163</span><span id="line-1163"> * Get the current active master.</span> |
| <span class="source-line-no">1164</span><span id="line-1164"> * @return current master server name</span> |
| <span class="source-line-no">1165</span><span id="line-1165"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1166</span><span id="line-1166"> */</span> |
| <span class="source-line-no">1167</span><span id="line-1167"> default ServerName getMaster() throws IOException {</span> |
| <span class="source-line-no">1168</span><span id="line-1168"> return getClusterMetrics(EnumSet.of(Option.MASTER)).getMasterName();</span> |
| <span class="source-line-no">1169</span><span id="line-1169"> }</span> |
| <span class="source-line-no">1170</span><span id="line-1170"></span> |
| <span class="source-line-no">1171</span><span id="line-1171"> /**</span> |
| <span class="source-line-no">1172</span><span id="line-1172"> * Get a list of current backup masters.</span> |
| <span class="source-line-no">1173</span><span id="line-1173"> * @return current backup master list</span> |
| <span class="source-line-no">1174</span><span id="line-1174"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1175</span><span id="line-1175"> */</span> |
| <span class="source-line-no">1176</span><span id="line-1176"> default Collection<ServerName> getBackupMasters() throws IOException {</span> |
| <span class="source-line-no">1177</span><span id="line-1177"> return getClusterMetrics(EnumSet.of(Option.BACKUP_MASTERS)).getBackupMasterNames();</span> |
| <span class="source-line-no">1178</span><span id="line-1178"> }</span> |
| <span class="source-line-no">1179</span><span id="line-1179"></span> |
| <span class="source-line-no">1180</span><span id="line-1180"> /**</span> |
| <span class="source-line-no">1181</span><span id="line-1181"> * Get the live server list.</span> |
| <span class="source-line-no">1182</span><span id="line-1182"> * @return current live region servers list</span> |
| <span class="source-line-no">1183</span><span id="line-1183"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1184</span><span id="line-1184"> */</span> |
| <span class="source-line-no">1185</span><span id="line-1185"> default Collection<ServerName> getRegionServers() throws IOException {</span> |
| <span class="source-line-no">1186</span><span id="line-1186"> return getRegionServers(false);</span> |
| <span class="source-line-no">1187</span><span id="line-1187"> }</span> |
| <span class="source-line-no">1188</span><span id="line-1188"></span> |
| <span class="source-line-no">1189</span><span id="line-1189"> /**</span> |
| <span class="source-line-no">1190</span><span id="line-1190"> * Retrieve all current live region servers including decommissioned if excludeDecommissionedRS is</span> |
| <span class="source-line-no">1191</span><span id="line-1191"> * false, else non-decommissioned ones only</span> |
| <span class="source-line-no">1192</span><span id="line-1192"> * @param excludeDecommissionedRS should we exclude decommissioned RS nodes</span> |
| <span class="source-line-no">1193</span><span id="line-1193"> * @return all current live region servers including/excluding decommissioned hosts</span> |
| <span class="source-line-no">1194</span><span id="line-1194"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1195</span><span id="line-1195"> */</span> |
| <span class="source-line-no">1196</span><span id="line-1196"> default Collection<ServerName> getRegionServers(boolean excludeDecommissionedRS)</span> |
| <span class="source-line-no">1197</span><span id="line-1197"> throws IOException {</span> |
| <span class="source-line-no">1198</span><span id="line-1198"> List<ServerName> allServers =</span> |
| <span class="source-line-no">1199</span><span id="line-1199"> getClusterMetrics(EnumSet.of(Option.SERVERS_NAME)).getServersName();</span> |
| <span class="source-line-no">1200</span><span id="line-1200"> if (!excludeDecommissionedRS) {</span> |
| <span class="source-line-no">1201</span><span id="line-1201"> return allServers;</span> |
| <span class="source-line-no">1202</span><span id="line-1202"> }</span> |
| <span class="source-line-no">1203</span><span id="line-1203"> List<ServerName> decommissionedRegionServers = listDecommissionedRegionServers();</span> |
| <span class="source-line-no">1204</span><span id="line-1204"> return allServers.stream().filter(s -> !decommissionedRegionServers.contains(s))</span> |
| <span class="source-line-no">1205</span><span id="line-1205"> .collect(ImmutableList.toImmutableList());</span> |
| <span class="source-line-no">1206</span><span id="line-1206"> }</span> |
| <span class="source-line-no">1207</span><span id="line-1207"></span> |
| <span class="source-line-no">1208</span><span id="line-1208"> /**</span> |
| <span class="source-line-no">1209</span><span id="line-1209"> * Get {@link RegionMetrics} of all regions hosted on a regionserver.</span> |
| <span class="source-line-no">1210</span><span id="line-1210"> * @param serverName region server from which {@link RegionMetrics} is required.</span> |
| <span class="source-line-no">1211</span><span id="line-1211"> * @return a {@link RegionMetrics} list of all regions hosted on a region server</span> |
| <span class="source-line-no">1212</span><span id="line-1212"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1213</span><span id="line-1213"> */</span> |
| <span class="source-line-no">1214</span><span id="line-1214"> List<RegionMetrics> getRegionMetrics(ServerName serverName) throws IOException;</span> |
| <span class="source-line-no">1215</span><span id="line-1215"></span> |
| <span class="source-line-no">1216</span><span id="line-1216"> /**</span> |
| <span class="source-line-no">1217</span><span id="line-1217"> * Get {@link RegionMetrics} of all regions hosted on a regionserver for a table.</span> |
| <span class="source-line-no">1218</span><span id="line-1218"> * @param serverName region server from which {@link RegionMetrics} is required.</span> |
| <span class="source-line-no">1219</span><span id="line-1219"> * @param tableName get {@link RegionMetrics} of regions belonging to the table</span> |
| <span class="source-line-no">1220</span><span id="line-1220"> * @return region metrics map of all regions of a table hosted on a region server</span> |
| <span class="source-line-no">1221</span><span id="line-1221"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1222</span><span id="line-1222"> */</span> |
| <span class="source-line-no">1223</span><span id="line-1223"> List<RegionMetrics> getRegionMetrics(ServerName serverName, TableName tableName)</span> |
| <span class="source-line-no">1224</span><span id="line-1224"> throws IOException;</span> |
| <span class="source-line-no">1225</span><span id="line-1225"></span> |
| <span class="source-line-no">1226</span><span id="line-1226"> /** Returns Configuration used by the instance. */</span> |
| <span class="source-line-no">1227</span><span id="line-1227"> Configuration getConfiguration();</span> |
| <span class="source-line-no">1228</span><span id="line-1228"></span> |
| <span class="source-line-no">1229</span><span id="line-1229"> /**</span> |
| <span class="source-line-no">1230</span><span id="line-1230"> * Create a new namespace. Blocks until namespace has been successfully created or an exception is</span> |
| <span class="source-line-no">1231</span><span id="line-1231"> * thrown.</span> |
| <span class="source-line-no">1232</span><span id="line-1232"> * @param descriptor descriptor which describes the new namespace.</span> |
| <span class="source-line-no">1233</span><span id="line-1233"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1234</span><span id="line-1234"> */</span> |
| <span class="source-line-no">1235</span><span id="line-1235"> default void createNamespace(NamespaceDescriptor descriptor) throws IOException {</span> |
| <span class="source-line-no">1236</span><span id="line-1236"> get(createNamespaceAsync(descriptor), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1237</span><span id="line-1237"> }</span> |
| <span class="source-line-no">1238</span><span id="line-1238"></span> |
| <span class="source-line-no">1239</span><span id="line-1239"> /**</span> |
| <span class="source-line-no">1240</span><span id="line-1240"> * Create a new namespace.</span> |
| <span class="source-line-no">1241</span><span id="line-1241"> * @param descriptor descriptor which describes the new namespace</span> |
| <span class="source-line-no">1242</span><span id="line-1242"> * @return the result of the async create namespace operation. Use Future.get(long, TimeUnit) to</span> |
| <span class="source-line-no">1243</span><span id="line-1243"> * wait on the operation to complete.</span> |
| <span class="source-line-no">1244</span><span id="line-1244"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1245</span><span id="line-1245"> */</span> |
| <span class="source-line-no">1246</span><span id="line-1246"> Future<Void> createNamespaceAsync(NamespaceDescriptor descriptor) throws IOException;</span> |
| <span class="source-line-no">1247</span><span id="line-1247"></span> |
| <span class="source-line-no">1248</span><span id="line-1248"> /**</span> |
| <span class="source-line-no">1249</span><span id="line-1249"> * Modify an existing namespace. Blocks until namespace has been successfully modified or an</span> |
| <span class="source-line-no">1250</span><span id="line-1250"> * exception is thrown.</span> |
| <span class="source-line-no">1251</span><span id="line-1251"> * @param descriptor descriptor which describes the new namespace</span> |
| <span class="source-line-no">1252</span><span id="line-1252"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1253</span><span id="line-1253"> */</span> |
| <span class="source-line-no">1254</span><span id="line-1254"> default void modifyNamespace(NamespaceDescriptor descriptor) throws IOException {</span> |
| <span class="source-line-no">1255</span><span id="line-1255"> get(modifyNamespaceAsync(descriptor), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1256</span><span id="line-1256"> }</span> |
| <span class="source-line-no">1257</span><span id="line-1257"></span> |
| <span class="source-line-no">1258</span><span id="line-1258"> /**</span> |
| <span class="source-line-no">1259</span><span id="line-1259"> * Modify an existing namespace.</span> |
| <span class="source-line-no">1260</span><span id="line-1260"> * @param descriptor descriptor which describes the new namespace</span> |
| <span class="source-line-no">1261</span><span id="line-1261"> * @return the result of the async modify namespace operation. Use Future.get(long, TimeUnit) to</span> |
| <span class="source-line-no">1262</span><span id="line-1262"> * wait on the operation to complete.</span> |
| <span class="source-line-no">1263</span><span id="line-1263"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1264</span><span id="line-1264"> */</span> |
| <span class="source-line-no">1265</span><span id="line-1265"> Future<Void> modifyNamespaceAsync(NamespaceDescriptor descriptor) throws IOException;</span> |
| <span class="source-line-no">1266</span><span id="line-1266"></span> |
| <span class="source-line-no">1267</span><span id="line-1267"> /**</span> |
| <span class="source-line-no">1268</span><span id="line-1268"> * Delete an existing namespace. Only empty namespaces (no tables) can be removed. Blocks until</span> |
| <span class="source-line-no">1269</span><span id="line-1269"> * namespace has been successfully deleted or an exception is thrown.</span> |
| <span class="source-line-no">1270</span><span id="line-1270"> * @param name namespace name</span> |
| <span class="source-line-no">1271</span><span id="line-1271"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1272</span><span id="line-1272"> */</span> |
| <span class="source-line-no">1273</span><span id="line-1273"> default void deleteNamespace(String name) throws IOException {</span> |
| <span class="source-line-no">1274</span><span id="line-1274"> get(deleteNamespaceAsync(name), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1275</span><span id="line-1275"> }</span> |
| <span class="source-line-no">1276</span><span id="line-1276"></span> |
| <span class="source-line-no">1277</span><span id="line-1277"> /**</span> |
| <span class="source-line-no">1278</span><span id="line-1278"> * Delete an existing namespace. Only empty namespaces (no tables) can be removed.</span> |
| <span class="source-line-no">1279</span><span id="line-1279"> * @param name namespace name</span> |
| <span class="source-line-no">1280</span><span id="line-1280"> * @return the result of the async delete namespace operation. Use Future.get(long, TimeUnit) to</span> |
| <span class="source-line-no">1281</span><span id="line-1281"> * wait on the operation to complete.</span> |
| <span class="source-line-no">1282</span><span id="line-1282"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1283</span><span id="line-1283"> */</span> |
| <span class="source-line-no">1284</span><span id="line-1284"> Future<Void> deleteNamespaceAsync(String name) throws IOException;</span> |
| <span class="source-line-no">1285</span><span id="line-1285"></span> |
| <span class="source-line-no">1286</span><span id="line-1286"> /**</span> |
| <span class="source-line-no">1287</span><span id="line-1287"> * Get a namespace descriptor by name.</span> |
| <span class="source-line-no">1288</span><span id="line-1288"> * @param name name of namespace descriptor</span> |
| <span class="source-line-no">1289</span><span id="line-1289"> * @return A descriptor</span> |
| <span class="source-line-no">1290</span><span id="line-1290"> * @throws org.apache.hadoop.hbase.NamespaceNotFoundException if the namespace was not found</span> |
| <span class="source-line-no">1291</span><span id="line-1291"> * @throws IOException if a remote or network exception</span> |
| <span class="source-line-no">1292</span><span id="line-1292"> * occurs</span> |
| <span class="source-line-no">1293</span><span id="line-1293"> */</span> |
| <span class="source-line-no">1294</span><span id="line-1294"> NamespaceDescriptor getNamespaceDescriptor(String name)</span> |
| <span class="source-line-no">1295</span><span id="line-1295"> throws NamespaceNotFoundException, IOException;</span> |
| <span class="source-line-no">1296</span><span id="line-1296"></span> |
| <span class="source-line-no">1297</span><span id="line-1297"> /**</span> |
| <span class="source-line-no">1298</span><span id="line-1298"> * List available namespaces</span> |
| <span class="source-line-no">1299</span><span id="line-1299"> * @return List of namespace names</span> |
| <span class="source-line-no">1300</span><span id="line-1300"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1301</span><span id="line-1301"> */</span> |
| <span class="source-line-no">1302</span><span id="line-1302"> String[] listNamespaces() throws IOException;</span> |
| <span class="source-line-no">1303</span><span id="line-1303"></span> |
| <span class="source-line-no">1304</span><span id="line-1304"> /**</span> |
| <span class="source-line-no">1305</span><span id="line-1305"> * List available namespace descriptors</span> |
| <span class="source-line-no">1306</span><span id="line-1306"> * @return List of descriptors</span> |
| <span class="source-line-no">1307</span><span id="line-1307"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1308</span><span id="line-1308"> */</span> |
| <span class="source-line-no">1309</span><span id="line-1309"> NamespaceDescriptor[] listNamespaceDescriptors() throws IOException;</span> |
| <span class="source-line-no">1310</span><span id="line-1310"></span> |
| <span class="source-line-no">1311</span><span id="line-1311"> /**</span> |
| <span class="source-line-no">1312</span><span id="line-1312"> * Get list of table descriptors by namespace.</span> |
| <span class="source-line-no">1313</span><span id="line-1313"> * @param name namespace name</span> |
| <span class="source-line-no">1314</span><span id="line-1314"> * @return returns a list of TableDescriptors</span> |
| <span class="source-line-no">1315</span><span id="line-1315"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1316</span><span id="line-1316"> */</span> |
| <span class="source-line-no">1317</span><span id="line-1317"> List<TableDescriptor> listTableDescriptorsByNamespace(byte[] name) throws IOException;</span> |
| <span class="source-line-no">1318</span><span id="line-1318"></span> |
| <span class="source-line-no">1319</span><span id="line-1319"> /**</span> |
| <span class="source-line-no">1320</span><span id="line-1320"> * Get list of table names by namespace.</span> |
| <span class="source-line-no">1321</span><span id="line-1321"> * @param name namespace name</span> |
| <span class="source-line-no">1322</span><span id="line-1322"> * @return The list of table names in the namespace</span> |
| <span class="source-line-no">1323</span><span id="line-1323"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1324</span><span id="line-1324"> */</span> |
| <span class="source-line-no">1325</span><span id="line-1325"> TableName[] listTableNamesByNamespace(String name) throws IOException;</span> |
| <span class="source-line-no">1326</span><span id="line-1326"></span> |
| <span class="source-line-no">1327</span><span id="line-1327"> /**</span> |
| <span class="source-line-no">1328</span><span id="line-1328"> * Get the regions of a given table.</span> |
| <span class="source-line-no">1329</span><span id="line-1329"> * @param tableName the name of the table</span> |
| <span class="source-line-no">1330</span><span id="line-1330"> * @return List of {@link RegionInfo}.</span> |
| <span class="source-line-no">1331</span><span id="line-1331"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1332</span><span id="line-1332"> */</span> |
| <span class="source-line-no">1333</span><span id="line-1333"> List<RegionInfo> getRegions(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">1334</span><span id="line-1334"></span> |
| <span class="source-line-no">1335</span><span id="line-1335"> @Override</span> |
| <span class="source-line-no">1336</span><span id="line-1336"> void close();</span> |
| <span class="source-line-no">1337</span><span id="line-1337"></span> |
| <span class="source-line-no">1338</span><span id="line-1338"> /**</span> |
| <span class="source-line-no">1339</span><span id="line-1339"> * Get tableDescriptors.</span> |
| <span class="source-line-no">1340</span><span id="line-1340"> * @param tableNames List of table names</span> |
| <span class="source-line-no">1341</span><span id="line-1341"> * @return returns a list of TableDescriptors</span> |
| <span class="source-line-no">1342</span><span id="line-1342"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1343</span><span id="line-1343"> */</span> |
| <span class="source-line-no">1344</span><span id="line-1344"> List<TableDescriptor> listTableDescriptors(List<TableName> tableNames) throws IOException;</span> |
| <span class="source-line-no">1345</span><span id="line-1345"></span> |
| <span class="source-line-no">1346</span><span id="line-1346"> /**</span> |
| <span class="source-line-no">1347</span><span id="line-1347"> * Abort a procedure.</span> |
| <span class="source-line-no">1348</span><span id="line-1348"> * <p/></span> |
| <span class="source-line-no">1349</span><span id="line-1349"> * Do not use. Usually it is ignored but if not, it can do more damage than good. See hbck2.</span> |
| <span class="source-line-no">1350</span><span id="line-1350"> * @param procId ID of the procedure to abort</span> |
| <span class="source-line-no">1351</span><span id="line-1351"> * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?</span> |
| <span class="source-line-no">1352</span><span id="line-1352"> * @return <code>true</code> if aborted, <code>false</code> if procedure already completed or does</span> |
| <span class="source-line-no">1353</span><span id="line-1353"> * not exist</span> |
| <span class="source-line-no">1354</span><span id="line-1354"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1355</span><span id="line-1355"> * @deprecated since 2.1.1 and will be removed in 4.0.0.</span> |
| <span class="source-line-no">1356</span><span id="line-1356"> * @see <a href="https://issues.apache.org/jira/browse/HBASE-21223">HBASE-21223</a></span> |
| <span class="source-line-no">1357</span><span id="line-1357"> */</span> |
| <span class="source-line-no">1358</span><span id="line-1358"> @Deprecated</span> |
| <span class="source-line-no">1359</span><span id="line-1359"> default boolean abortProcedure(long procId, boolean mayInterruptIfRunning) throws IOException {</span> |
| <span class="source-line-no">1360</span><span id="line-1360"> return get(abortProcedureAsync(procId, mayInterruptIfRunning), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">1361</span><span id="line-1361"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1362</span><span id="line-1362"> }</span> |
| <span class="source-line-no">1363</span><span id="line-1363"></span> |
| <span class="source-line-no">1364</span><span id="line-1364"> /**</span> |
| <span class="source-line-no">1365</span><span id="line-1365"> * Abort a procedure but does not block and wait for completion. You can use Future.get(long,</span> |
| <span class="source-line-no">1366</span><span id="line-1366"> * TimeUnit) to wait on the operation to complete. It may throw ExecutionException if there was an</span> |
| <span class="source-line-no">1367</span><span id="line-1367"> * error while executing the operation or TimeoutException in case the wait timeout was not long</span> |
| <span class="source-line-no">1368</span><span id="line-1368"> * enough to allow the operation to complete. Do not use. Usually it is ignored but if not, it can</span> |
| <span class="source-line-no">1369</span><span id="line-1369"> * do more damage than good. See hbck2.</span> |
| <span class="source-line-no">1370</span><span id="line-1370"> * @param procId ID of the procedure to abort</span> |
| <span class="source-line-no">1371</span><span id="line-1371"> * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?</span> |
| <span class="source-line-no">1372</span><span id="line-1372"> * @return <code>true</code> if aborted, <code>false</code> if procedure already completed or does</span> |
| <span class="source-line-no">1373</span><span id="line-1373"> * not exist</span> |
| <span class="source-line-no">1374</span><span id="line-1374"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1375</span><span id="line-1375"> * @deprecated since 2.1.1 and will be removed in 4.0.0.</span> |
| <span class="source-line-no">1376</span><span id="line-1376"> * @see <a href="https://issues.apache.org/jira/browse/HBASE-21223">HBASE-21223</a></span> |
| <span class="source-line-no">1377</span><span id="line-1377"> */</span> |
| <span class="source-line-no">1378</span><span id="line-1378"> @Deprecated</span> |
| <span class="source-line-no">1379</span><span id="line-1379"> Future<Boolean> abortProcedureAsync(long procId, boolean mayInterruptIfRunning)</span> |
| <span class="source-line-no">1380</span><span id="line-1380"> throws IOException;</span> |
| <span class="source-line-no">1381</span><span id="line-1381"></span> |
| <span class="source-line-no">1382</span><span id="line-1382"> /**</span> |
| <span class="source-line-no">1383</span><span id="line-1383"> * Get procedures.</span> |
| <span class="source-line-no">1384</span><span id="line-1384"> * @return procedure list in JSON</span> |
| <span class="source-line-no">1385</span><span id="line-1385"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1386</span><span id="line-1386"> */</span> |
| <span class="source-line-no">1387</span><span id="line-1387"> String getProcedures() throws IOException;</span> |
| <span class="source-line-no">1388</span><span id="line-1388"></span> |
| <span class="source-line-no">1389</span><span id="line-1389"> /**</span> |
| <span class="source-line-no">1390</span><span id="line-1390"> * Get locks.</span> |
| <span class="source-line-no">1391</span><span id="line-1391"> * @return lock list in JSON</span> |
| <span class="source-line-no">1392</span><span id="line-1392"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1393</span><span id="line-1393"> */</span> |
| <span class="source-line-no">1394</span><span id="line-1394"> String getLocks() throws IOException;</span> |
| <span class="source-line-no">1395</span><span id="line-1395"></span> |
| <span class="source-line-no">1396</span><span id="line-1396"> /**</span> |
| <span class="source-line-no">1397</span><span id="line-1397"> * Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.</span> |
| <span class="source-line-no">1398</span><span id="line-1398"> * Note that the actual rolling of the log writer is asynchronous and may not be complete when</span> |
| <span class="source-line-no">1399</span><span id="line-1399"> * this method returns. As a side effect of this call, the named region server may schedule store</span> |
| <span class="source-line-no">1400</span><span id="line-1400"> * flushes at the request of the wal.</span> |
| <span class="source-line-no">1401</span><span id="line-1401"> * @param serverName The servername of the regionserver.</span> |
| <span class="source-line-no">1402</span><span id="line-1402"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1403</span><span id="line-1403"> * @throws FailedLogCloseException if we failed to close the WAL</span> |
| <span class="source-line-no">1404</span><span id="line-1404"> */</span> |
| <span class="source-line-no">1405</span><span id="line-1405"> void rollWALWriter(ServerName serverName) throws IOException, FailedLogCloseException;</span> |
| <span class="source-line-no">1406</span><span id="line-1406"></span> |
| <span class="source-line-no">1407</span><span id="line-1407"> /**</span> |
| <span class="source-line-no">1408</span><span id="line-1408"> * Helper that delegates to getClusterMetrics().getMasterCoprocessorNames().</span> |
| <span class="source-line-no">1409</span><span id="line-1409"> * @return an array of master coprocessors</span> |
| <span class="source-line-no">1410</span><span id="line-1410"> * @see org.apache.hadoop.hbase.ClusterMetrics#getMasterCoprocessorNames()</span> |
| <span class="source-line-no">1411</span><span id="line-1411"> */</span> |
| <span class="source-line-no">1412</span><span id="line-1412"> default List<String> getMasterCoprocessorNames() throws IOException {</span> |
| <span class="source-line-no">1413</span><span id="line-1413"> return getClusterMetrics(EnumSet.of(Option.MASTER_COPROCESSORS)).getMasterCoprocessorNames();</span> |
| <span class="source-line-no">1414</span><span id="line-1414"> }</span> |
| <span class="source-line-no">1415</span><span id="line-1415"></span> |
| <span class="source-line-no">1416</span><span id="line-1416"> /**</span> |
| <span class="source-line-no">1417</span><span id="line-1417"> * Get the current compaction state of a table. It could be in a major compaction, a minor</span> |
| <span class="source-line-no">1418</span><span id="line-1418"> * compaction, both, or none.</span> |
| <span class="source-line-no">1419</span><span id="line-1419"> * @param tableName table to examine</span> |
| <span class="source-line-no">1420</span><span id="line-1420"> * @return the current compaction state</span> |
| <span class="source-line-no">1421</span><span id="line-1421"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1422</span><span id="line-1422"> */</span> |
| <span class="source-line-no">1423</span><span id="line-1423"> CompactionState getCompactionState(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">1424</span><span id="line-1424"></span> |
| <span class="source-line-no">1425</span><span id="line-1425"> /**</span> |
| <span class="source-line-no">1426</span><span id="line-1426"> * Get the current compaction state of a table. It could be in a compaction, or none.</span> |
| <span class="source-line-no">1427</span><span id="line-1427"> * @param tableName table to examine</span> |
| <span class="source-line-no">1428</span><span id="line-1428"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">1429</span><span id="line-1429"> * @return the current compaction state</span> |
| <span class="source-line-no">1430</span><span id="line-1430"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1431</span><span id="line-1431"> */</span> |
| <span class="source-line-no">1432</span><span id="line-1432"> CompactionState getCompactionState(TableName tableName, CompactType compactType)</span> |
| <span class="source-line-no">1433</span><span id="line-1433"> throws IOException;</span> |
| <span class="source-line-no">1434</span><span id="line-1434"></span> |
| <span class="source-line-no">1435</span><span id="line-1435"> /**</span> |
| <span class="source-line-no">1436</span><span id="line-1436"> * Get the current compaction state of region. It could be in a major compaction, a minor</span> |
| <span class="source-line-no">1437</span><span id="line-1437"> * compaction, both, or none.</span> |
| <span class="source-line-no">1438</span><span id="line-1438"> * @param regionName region to examine</span> |
| <span class="source-line-no">1439</span><span id="line-1439"> * @return the current compaction state</span> |
| <span class="source-line-no">1440</span><span id="line-1440"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1441</span><span id="line-1441"> */</span> |
| <span class="source-line-no">1442</span><span id="line-1442"> CompactionState getCompactionStateForRegion(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">1443</span><span id="line-1443"></span> |
| <span class="source-line-no">1444</span><span id="line-1444"> /**</span> |
| <span class="source-line-no">1445</span><span id="line-1445"> * Get the timestamp of the last major compaction for the passed table The timestamp of the oldest</span> |
| <span class="source-line-no">1446</span><span id="line-1446"> * HFile resulting from a major compaction of that table, or 0 if no such HFile could be found.</span> |
| <span class="source-line-no">1447</span><span id="line-1447"> * @param tableName table to examine</span> |
| <span class="source-line-no">1448</span><span id="line-1448"> * @return the last major compaction timestamp or 0</span> |
| <span class="source-line-no">1449</span><span id="line-1449"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1450</span><span id="line-1450"> */</span> |
| <span class="source-line-no">1451</span><span id="line-1451"> long getLastMajorCompactionTimestamp(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">1452</span><span id="line-1452"></span> |
| <span class="source-line-no">1453</span><span id="line-1453"> /**</span> |
| <span class="source-line-no">1454</span><span id="line-1454"> * Get the timestamp of the last major compaction for the passed region. The timestamp of the</span> |
| <span class="source-line-no">1455</span><span id="line-1455"> * oldest HFile resulting from a major compaction of that region, or 0 if no such HFile could be</span> |
| <span class="source-line-no">1456</span><span id="line-1456"> * found.</span> |
| <span class="source-line-no">1457</span><span id="line-1457"> * @param regionName region to examine</span> |
| <span class="source-line-no">1458</span><span id="line-1458"> * @return the last major compaction timestamp or 0</span> |
| <span class="source-line-no">1459</span><span id="line-1459"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1460</span><span id="line-1460"> */</span> |
| <span class="source-line-no">1461</span><span id="line-1461"> long getLastMajorCompactionTimestampForRegion(byte[] regionName) throws IOException;</span> |
| <span class="source-line-no">1462</span><span id="line-1462"></span> |
| <span class="source-line-no">1463</span><span id="line-1463"> /**</span> |
| <span class="source-line-no">1464</span><span id="line-1464"> * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be</span> |
| <span class="source-line-no">1465</span><span id="line-1465"> * taken. If the table is disabled, an offline snapshot is taken. Snapshots are taken sequentially</span> |
| <span class="source-line-no">1466</span><span id="line-1466"> * even when requested concurrently, across all tables. Snapshots are considered unique based on</span> |
| <span class="source-line-no">1467</span><span id="line-1467"> * <b>the name of the snapshot</b>. Attempts to take a snapshot with the same name (even a</span> |
| <span class="source-line-no">1468</span><span id="line-1468"> * different type or with different parameters) will fail with a</span> |
| <span class="source-line-no">1469</span><span id="line-1469"> * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate</span> |
| <span class="source-line-no">1470</span><span id="line-1470"> * naming. Snapshot names follow the same naming constraints as tables in HBase. See</span> |
| <span class="source-line-no">1471</span><span id="line-1471"> * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.</span> |
| <span class="source-line-no">1472</span><span id="line-1472"> * @param snapshotName name of the snapshot to be created</span> |
| <span class="source-line-no">1473</span><span id="line-1473"> * @param tableName name of the table for which snapshot is created</span> |
| <span class="source-line-no">1474</span><span id="line-1474"> * @throws IOException if a remote or network</span> |
| <span class="source-line-no">1475</span><span id="line-1475"> * exception occurs</span> |
| <span class="source-line-no">1476</span><span id="line-1476"> * @throws org.apache.hadoop.hbase.snapshot.SnapshotCreationException if snapshot creation failed</span> |
| <span class="source-line-no">1477</span><span id="line-1477"> * @throws IllegalArgumentException if the snapshot request is</span> |
| <span class="source-line-no">1478</span><span id="line-1478"> * formatted incorrectly</span> |
| <span class="source-line-no">1479</span><span id="line-1479"> */</span> |
| <span class="source-line-no">1480</span><span id="line-1480"> default void snapshot(String snapshotName, TableName tableName)</span> |
| <span class="source-line-no">1481</span><span id="line-1481"> throws IOException, SnapshotCreationException, IllegalArgumentException {</span> |
| <span class="source-line-no">1482</span><span id="line-1482"> snapshot(snapshotName, tableName, SnapshotType.FLUSH);</span> |
| <span class="source-line-no">1483</span><span id="line-1483"> }</span> |
| <span class="source-line-no">1484</span><span id="line-1484"></span> |
| <span class="source-line-no">1485</span><span id="line-1485"> /**</span> |
| <span class="source-line-no">1486</span><span id="line-1486"> * Create typed snapshot of the table. Snapshots are considered unique based on <b>the name of the</span> |
| <span class="source-line-no">1487</span><span id="line-1487"> * snapshot</b>. Snapshots are taken sequentially even when requested concurrently, across all</span> |
| <span class="source-line-no">1488</span><span id="line-1488"> * tables. Attempts to take a snapshot with the same name (even a different type or with different</span> |
| <span class="source-line-no">1489</span><span id="line-1489"> * parameters) will fail with a {@link SnapshotCreationException} indicating the duplicate naming.</span> |
| <span class="source-line-no">1490</span><span id="line-1490"> * Snapshot names follow the same naming constraints as tables in HBase. See</span> |
| <span class="source-line-no">1491</span><span id="line-1491"> * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.</span> |
| <span class="source-line-no">1492</span><span id="line-1492"> * @param snapshotName name to give the snapshot on the filesystem. Must be unique from all other</span> |
| <span class="source-line-no">1493</span><span id="line-1493"> * snapshots stored on the cluster</span> |
| <span class="source-line-no">1494</span><span id="line-1494"> * @param tableName name of the table to snapshot</span> |
| <span class="source-line-no">1495</span><span id="line-1495"> * @param type type of snapshot to take</span> |
| <span class="source-line-no">1496</span><span id="line-1496"> * @throws IOException we fail to reach the master</span> |
| <span class="source-line-no">1497</span><span id="line-1497"> * @throws SnapshotCreationException if snapshot creation failed</span> |
| <span class="source-line-no">1498</span><span id="line-1498"> * @throws IllegalArgumentException if the snapshot request is formatted incorrectly</span> |
| <span class="source-line-no">1499</span><span id="line-1499"> */</span> |
| <span class="source-line-no">1500</span><span id="line-1500"> default void snapshot(String snapshotName, TableName tableName, SnapshotType type)</span> |
| <span class="source-line-no">1501</span><span id="line-1501"> throws IOException, SnapshotCreationException, IllegalArgumentException {</span> |
| <span class="source-line-no">1502</span><span id="line-1502"> snapshot(new SnapshotDescription(snapshotName, tableName, type));</span> |
| <span class="source-line-no">1503</span><span id="line-1503"> }</span> |
| <span class="source-line-no">1504</span><span id="line-1504"></span> |
| <span class="source-line-no">1505</span><span id="line-1505"> /**</span> |
| <span class="source-line-no">1506</span><span id="line-1506"> * Create typed snapshot of the table. Snapshots are considered unique based on <b>the name of the</span> |
| <span class="source-line-no">1507</span><span id="line-1507"> * snapshot</b>. Snapshots are taken sequentially even when requested concurrently, across all</span> |
| <span class="source-line-no">1508</span><span id="line-1508"> * tables. Attempts to take a snapshot with the same name (even a different type or with different</span> |
| <span class="source-line-no">1509</span><span id="line-1509"> * parameters) will fail with a {@link SnapshotCreationException} indicating the duplicate naming.</span> |
| <span class="source-line-no">1510</span><span id="line-1510"> * Snapshot names follow the same naming constraints as tables in HBase. See</span> |
| <span class="source-line-no">1511</span><span id="line-1511"> * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}. Snapshot can</span> |
| <span class="source-line-no">1512</span><span id="line-1512"> * live with ttl seconds.</span> |
| <span class="source-line-no">1513</span><span id="line-1513"> * @param snapshotName name to give the snapshot on the filesystem. Must be unique from all other</span> |
| <span class="source-line-no">1514</span><span id="line-1514"> * snapshots stored on the cluster</span> |
| <span class="source-line-no">1515</span><span id="line-1515"> * @param tableName name of the table to snapshot</span> |
| <span class="source-line-no">1516</span><span id="line-1516"> * @param type type of snapshot to take</span> |
| <span class="source-line-no">1517</span><span id="line-1517"> * @param snapshotProps snapshot additional properties e.g. TTL</span> |
| <span class="source-line-no">1518</span><span id="line-1518"> * @throws IOException we fail to reach the master</span> |
| <span class="source-line-no">1519</span><span id="line-1519"> * @throws SnapshotCreationException if snapshot creation failed</span> |
| <span class="source-line-no">1520</span><span id="line-1520"> * @throws IllegalArgumentException if the snapshot request is formatted incorrectly</span> |
| <span class="source-line-no">1521</span><span id="line-1521"> */</span> |
| <span class="source-line-no">1522</span><span id="line-1522"> default void snapshot(String snapshotName, TableName tableName, SnapshotType type,</span> |
| <span class="source-line-no">1523</span><span id="line-1523"> Map<String, Object> snapshotProps)</span> |
| <span class="source-line-no">1524</span><span id="line-1524"> throws IOException, SnapshotCreationException, IllegalArgumentException {</span> |
| <span class="source-line-no">1525</span><span id="line-1525"> snapshot(new SnapshotDescription(snapshotName, tableName, type, snapshotProps));</span> |
| <span class="source-line-no">1526</span><span id="line-1526"> }</span> |
| <span class="source-line-no">1527</span><span id="line-1527"></span> |
| <span class="source-line-no">1528</span><span id="line-1528"> /**</span> |
| <span class="source-line-no">1529</span><span id="line-1529"> * Create typed snapshot of the table. Snapshots are considered unique based on <b>the name of the</span> |
| <span class="source-line-no">1530</span><span id="line-1530"> * snapshot</b>. Snapshots are taken sequentially even when requested concurrently, across all</span> |
| <span class="source-line-no">1531</span><span id="line-1531"> * tables. Attempts to take a snapshot with the same name (even a different type or with different</span> |
| <span class="source-line-no">1532</span><span id="line-1532"> * parameters) will fail with a {@link SnapshotCreationException} indicating the duplicate naming.</span> |
| <span class="source-line-no">1533</span><span id="line-1533"> * Snapshot names follow the same naming constraints as tables in HBase. See</span> |
| <span class="source-line-no">1534</span><span id="line-1534"> * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}. Snapshot can</span> |
| <span class="source-line-no">1535</span><span id="line-1535"> * live with ttl seconds.</span> |
| <span class="source-line-no">1536</span><span id="line-1536"> * @param snapshotName name to give the snapshot on the filesystem. Must be unique from all other</span> |
| <span class="source-line-no">1537</span><span id="line-1537"> * snapshots stored on the cluster</span> |
| <span class="source-line-no">1538</span><span id="line-1538"> * @param tableName name of the table to snapshot</span> |
| <span class="source-line-no">1539</span><span id="line-1539"> * @param snapshotProps snapshot additional properties e.g. TTL</span> |
| <span class="source-line-no">1540</span><span id="line-1540"> * @throws IOException we fail to reach the master</span> |
| <span class="source-line-no">1541</span><span id="line-1541"> * @throws SnapshotCreationException if snapshot creation failed</span> |
| <span class="source-line-no">1542</span><span id="line-1542"> * @throws IllegalArgumentException if the snapshot request is formatted incorrectly</span> |
| <span class="source-line-no">1543</span><span id="line-1543"> */</span> |
| <span class="source-line-no">1544</span><span id="line-1544"> default void snapshot(String snapshotName, TableName tableName, Map<String, Object> snapshotProps)</span> |
| <span class="source-line-no">1545</span><span id="line-1545"> throws IOException, SnapshotCreationException, IllegalArgumentException {</span> |
| <span class="source-line-no">1546</span><span id="line-1546"> snapshot(new SnapshotDescription(snapshotName, tableName, SnapshotType.FLUSH, snapshotProps));</span> |
| <span class="source-line-no">1547</span><span id="line-1547"> }</span> |
| <span class="source-line-no">1548</span><span id="line-1548"></span> |
| <span class="source-line-no">1549</span><span id="line-1549"> /**</span> |
| <span class="source-line-no">1550</span><span id="line-1550"> * Take a snapshot and wait for the server to complete that snapshot (blocking). Snapshots are</span> |
| <span class="source-line-no">1551</span><span id="line-1551"> * considered unique based on <b>the name of the snapshot</b>. Snapshots are taken sequentially</span> |
| <span class="source-line-no">1552</span><span id="line-1552"> * even when requested concurrently, across all tables. Attempts to take a snapshot with the same</span> |
| <span class="source-line-no">1553</span><span id="line-1553"> * name (even a different type or with different parameters) will fail with a</span> |
| <span class="source-line-no">1554</span><span id="line-1554"> * {@link SnapshotCreationException} indicating the duplicate naming. Snapshot names follow the</span> |
| <span class="source-line-no">1555</span><span id="line-1555"> * same naming constraints as tables in HBase. See</span> |
| <span class="source-line-no">1556</span><span id="line-1556"> * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}. You should</span> |
| <span class="source-line-no">1557</span><span id="line-1557"> * probably use {@link #snapshot(String, org.apache.hadoop.hbase.TableName)} unless you are sure</span> |
| <span class="source-line-no">1558</span><span id="line-1558"> * about the type of snapshot that you want to take.</span> |
| <span class="source-line-no">1559</span><span id="line-1559"> * @param snapshot snapshot to take</span> |
| <span class="source-line-no">1560</span><span id="line-1560"> * @throws IOException or we lose contact with the master.</span> |
| <span class="source-line-no">1561</span><span id="line-1561"> * @throws SnapshotCreationException if snapshot failed to be taken</span> |
| <span class="source-line-no">1562</span><span id="line-1562"> * @throws IllegalArgumentException if the snapshot request is formatted incorrectly</span> |
| <span class="source-line-no">1563</span><span id="line-1563"> */</span> |
| <span class="source-line-no">1564</span><span id="line-1564"> void snapshot(SnapshotDescription snapshot)</span> |
| <span class="source-line-no">1565</span><span id="line-1565"> throws IOException, SnapshotCreationException, IllegalArgumentException;</span> |
| <span class="source-line-no">1566</span><span id="line-1566"></span> |
| <span class="source-line-no">1567</span><span id="line-1567"> /**</span> |
| <span class="source-line-no">1568</span><span id="line-1568"> * Take a snapshot without waiting for the server to complete that snapshot (asynchronous).</span> |
| <span class="source-line-no">1569</span><span id="line-1569"> * Snapshots are considered unique based on <b>the name of the snapshot</b>. Snapshots are taken</span> |
| <span class="source-line-no">1570</span><span id="line-1570"> * sequentially even when requested concurrently, across all tables.</span> |
| <span class="source-line-no">1571</span><span id="line-1571"> * @param snapshot snapshot to take</span> |
| <span class="source-line-no">1572</span><span id="line-1572"> * @throws IOException if the snapshot did not succeed or we lose contact with the</span> |
| <span class="source-line-no">1573</span><span id="line-1573"> * master.</span> |
| <span class="source-line-no">1574</span><span id="line-1574"> * @throws SnapshotCreationException if snapshot creation failed</span> |
| <span class="source-line-no">1575</span><span id="line-1575"> * @throws IllegalArgumentException if the snapshot request is formatted incorrectly</span> |
| <span class="source-line-no">1576</span><span id="line-1576"> */</span> |
| <span class="source-line-no">1577</span><span id="line-1577"> Future<Void> snapshotAsync(SnapshotDescription snapshot)</span> |
| <span class="source-line-no">1578</span><span id="line-1578"> throws IOException, SnapshotCreationException;</span> |
| <span class="source-line-no">1579</span><span id="line-1579"></span> |
| <span class="source-line-no">1580</span><span id="line-1580"> /**</span> |
| <span class="source-line-no">1581</span><span id="line-1581"> * Check the current state of the passed snapshot. There are three possible states:</span> |
| <span class="source-line-no">1582</span><span id="line-1582"> * <ol></span> |
| <span class="source-line-no">1583</span><span id="line-1583"> * <li>running - returns <tt>false</tt></li></span> |
| <span class="source-line-no">1584</span><span id="line-1584"> * <li>finished - returns <tt>true</tt></li></span> |
| <span class="source-line-no">1585</span><span id="line-1585"> * <li>finished with error - throws the exception that caused the snapshot to fail</li></span> |
| <span class="source-line-no">1586</span><span id="line-1586"> * </ol></span> |
| <span class="source-line-no">1587</span><span id="line-1587"> * The cluster only knows about the most recent snapshot. Therefore, if another snapshot has been</span> |
| <span class="source-line-no">1588</span><span id="line-1588"> * run/started since the snapshot you are checking, you will receive an</span> |
| <span class="source-line-no">1589</span><span id="line-1589"> * {@link org.apache.hadoop.hbase.snapshot.UnknownSnapshotException}.</span> |
| <span class="source-line-no">1590</span><span id="line-1590"> * @param snapshot description of the snapshot to check</span> |
| <span class="source-line-no">1591</span><span id="line-1591"> * @return <tt>true</tt> if the snapshot is completed, <tt>false</tt> if the snapshot is still</span> |
| <span class="source-line-no">1592</span><span id="line-1592"> * running</span> |
| <span class="source-line-no">1593</span><span id="line-1593"> * @throws IOException if we have a network issue</span> |
| <span class="source-line-no">1594</span><span id="line-1594"> * @throws org.apache.hadoop.hbase.snapshot.HBaseSnapshotException if the snapshot failed</span> |
| <span class="source-line-no">1595</span><span id="line-1595"> * @throws org.apache.hadoop.hbase.snapshot.UnknownSnapshotException if the requested snapshot is</span> |
| <span class="source-line-no">1596</span><span id="line-1596"> * unknown</span> |
| <span class="source-line-no">1597</span><span id="line-1597"> */</span> |
| <span class="source-line-no">1598</span><span id="line-1598"> boolean isSnapshotFinished(SnapshotDescription snapshot)</span> |
| <span class="source-line-no">1599</span><span id="line-1599"> throws IOException, HBaseSnapshotException, UnknownSnapshotException;</span> |
| <span class="source-line-no">1600</span><span id="line-1600"></span> |
| <span class="source-line-no">1601</span><span id="line-1601"> /**</span> |
| <span class="source-line-no">1602</span><span id="line-1602"> * Restore the specified snapshot on the original table. (The table must be disabled) If the</span> |
| <span class="source-line-no">1603</span><span id="line-1603"> * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to</span> |
| <span class="source-line-no">1604</span><span id="line-1604"> * <code>true</code>, a snapshot of the current table is taken before executing the restore</span> |
| <span class="source-line-no">1605</span><span id="line-1605"> * operation. In case of restore failure, the failsafe snapshot will be restored. If the restore</span> |
| <span class="source-line-no">1606</span><span id="line-1606"> * completes without problem the failsafe snapshot is deleted.</span> |
| <span class="source-line-no">1607</span><span id="line-1607"> * @param snapshotName name of the snapshot to restore</span> |
| <span class="source-line-no">1608</span><span id="line-1608"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1609</span><span id="line-1609"> * @throws RestoreSnapshotException if snapshot failed to be restored</span> |
| <span class="source-line-no">1610</span><span id="line-1610"> * @throws IllegalArgumentException if the restore request is formatted incorrectly</span> |
| <span class="source-line-no">1611</span><span id="line-1611"> */</span> |
| <span class="source-line-no">1612</span><span id="line-1612"> void restoreSnapshot(String snapshotName) throws IOException, RestoreSnapshotException;</span> |
| <span class="source-line-no">1613</span><span id="line-1613"></span> |
| <span class="source-line-no">1614</span><span id="line-1614"> /**</span> |
| <span class="source-line-no">1615</span><span id="line-1615"> * Restore the specified snapshot on the original table. (The table must be disabled) If</span> |
| <span class="source-line-no">1616</span><span id="line-1616"> * 'takeFailSafeSnapshot' is set to <code>true</code>, a snapshot of the current table is taken</span> |
| <span class="source-line-no">1617</span><span id="line-1617"> * before executing the restore operation. In case of restore failure, the failsafe snapshot will</span> |
| <span class="source-line-no">1618</span><span id="line-1618"> * be restored. If the restore completes without problem the failsafe snapshot is deleted. The</span> |
| <span class="source-line-no">1619</span><span id="line-1619"> * failsafe snapshot name is configurable by using the property</span> |
| <span class="source-line-no">1620</span><span id="line-1620"> * "hbase.snapshot.restore.failsafe.name".</span> |
| <span class="source-line-no">1621</span><span id="line-1621"> * @param snapshotName name of the snapshot to restore</span> |
| <span class="source-line-no">1622</span><span id="line-1622"> * @param takeFailSafeSnapshot <code>true</code> if the failsafe snapshot should be taken</span> |
| <span class="source-line-no">1623</span><span id="line-1623"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1624</span><span id="line-1624"> * @throws RestoreSnapshotException if snapshot failed to be restored</span> |
| <span class="source-line-no">1625</span><span id="line-1625"> * @throws IllegalArgumentException if the restore request is formatted incorrectly</span> |
| <span class="source-line-no">1626</span><span id="line-1626"> */</span> |
| <span class="source-line-no">1627</span><span id="line-1627"> default void restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot)</span> |
| <span class="source-line-no">1628</span><span id="line-1628"> throws IOException, RestoreSnapshotException {</span> |
| <span class="source-line-no">1629</span><span id="line-1629"> restoreSnapshot(snapshotName, takeFailSafeSnapshot, false);</span> |
| <span class="source-line-no">1630</span><span id="line-1630"> }</span> |
| <span class="source-line-no">1631</span><span id="line-1631"></span> |
| <span class="source-line-no">1632</span><span id="line-1632"> /**</span> |
| <span class="source-line-no">1633</span><span id="line-1633"> * Restore the specified snapshot on the original table. (The table must be disabled) If</span> |
| <span class="source-line-no">1634</span><span id="line-1634"> * 'takeFailSafeSnapshot' is set to <code>true</code>, a snapshot of the current table is taken</span> |
| <span class="source-line-no">1635</span><span id="line-1635"> * before executing the restore operation. In case of restore failure, the failsafe snapshot will</span> |
| <span class="source-line-no">1636</span><span id="line-1636"> * be restored. If the restore completes without problem the failsafe snapshot is deleted. The</span> |
| <span class="source-line-no">1637</span><span id="line-1637"> * failsafe snapshot name is configurable by using the property</span> |
| <span class="source-line-no">1638</span><span id="line-1638"> * "hbase.snapshot.restore.failsafe.name".</span> |
| <span class="source-line-no">1639</span><span id="line-1639"> * @param snapshotName name of the snapshot to restore</span> |
| <span class="source-line-no">1640</span><span id="line-1640"> * @param takeFailSafeSnapshot <code>true</code> if the failsafe snapshot should be taken</span> |
| <span class="source-line-no">1641</span><span id="line-1641"> * @param restoreAcl <code>true</code> to restore acl of snapshot</span> |
| <span class="source-line-no">1642</span><span id="line-1642"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1643</span><span id="line-1643"> * @throws RestoreSnapshotException if snapshot failed to be restored</span> |
| <span class="source-line-no">1644</span><span id="line-1644"> * @throws IllegalArgumentException if the restore request is formatted incorrectly</span> |
| <span class="source-line-no">1645</span><span id="line-1645"> */</span> |
| <span class="source-line-no">1646</span><span id="line-1646"> void restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot, boolean restoreAcl)</span> |
| <span class="source-line-no">1647</span><span id="line-1647"> throws IOException, RestoreSnapshotException;</span> |
| <span class="source-line-no">1648</span><span id="line-1648"></span> |
| <span class="source-line-no">1649</span><span id="line-1649"> /**</span> |
| <span class="source-line-no">1650</span><span id="line-1650"> * Create a new table by cloning the snapshot content.</span> |
| <span class="source-line-no">1651</span><span id="line-1651"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">1652</span><span id="line-1652"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">1653</span><span id="line-1653"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1654</span><span id="line-1654"> * @throws TableExistsException if table to be created already exists</span> |
| <span class="source-line-no">1655</span><span id="line-1655"> * @throws RestoreSnapshotException if snapshot failed to be cloned</span> |
| <span class="source-line-no">1656</span><span id="line-1656"> * @throws IllegalArgumentException if the specified table has not a valid name</span> |
| <span class="source-line-no">1657</span><span id="line-1657"> */</span> |
| <span class="source-line-no">1658</span><span id="line-1658"> default void cloneSnapshot(String snapshotName, TableName tableName)</span> |
| <span class="source-line-no">1659</span><span id="line-1659"> throws IOException, TableExistsException, RestoreSnapshotException {</span> |
| <span class="source-line-no">1660</span><span id="line-1660"> cloneSnapshot(snapshotName, tableName, false, null);</span> |
| <span class="source-line-no">1661</span><span id="line-1661"> }</span> |
| <span class="source-line-no">1662</span><span id="line-1662"></span> |
| <span class="source-line-no">1663</span><span id="line-1663"> /**</span> |
| <span class="source-line-no">1664</span><span id="line-1664"> * Create a new table by cloning the snapshot content.</span> |
| <span class="source-line-no">1665</span><span id="line-1665"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">1666</span><span id="line-1666"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">1667</span><span id="line-1667"> * @param restoreAcl <code>true</code> to clone acl into newly created table</span> |
| <span class="source-line-no">1668</span><span id="line-1668"> * @param customSFT specify the StoreFileTracker used for the table</span> |
| <span class="source-line-no">1669</span><span id="line-1669"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1670</span><span id="line-1670"> * @throws TableExistsException if table to be created already exists</span> |
| <span class="source-line-no">1671</span><span id="line-1671"> * @throws RestoreSnapshotException if snapshot failed to be cloned</span> |
| <span class="source-line-no">1672</span><span id="line-1672"> * @throws IllegalArgumentException if the specified table has not a valid name</span> |
| <span class="source-line-no">1673</span><span id="line-1673"> */</span> |
| <span class="source-line-no">1674</span><span id="line-1674"> default void cloneSnapshot(String snapshotName, TableName tableName, boolean restoreAcl,</span> |
| <span class="source-line-no">1675</span><span id="line-1675"> String customSFT) throws IOException, TableExistsException, RestoreSnapshotException {</span> |
| <span class="source-line-no">1676</span><span id="line-1676"> get(cloneSnapshotAsync(snapshotName, tableName, restoreAcl, customSFT), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">1677</span><span id="line-1677"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1678</span><span id="line-1678"> }</span> |
| <span class="source-line-no">1679</span><span id="line-1679"></span> |
| <span class="source-line-no">1680</span><span id="line-1680"> /**</span> |
| <span class="source-line-no">1681</span><span id="line-1681"> * Create a new table by cloning the snapshot content.</span> |
| <span class="source-line-no">1682</span><span id="line-1682"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">1683</span><span id="line-1683"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">1684</span><span id="line-1684"> * @param restoreAcl <code>true</code> to clone acl into newly created table</span> |
| <span class="source-line-no">1685</span><span id="line-1685"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1686</span><span id="line-1686"> * @throws TableExistsException if table to be created already exists</span> |
| <span class="source-line-no">1687</span><span id="line-1687"> * @throws RestoreSnapshotException if snapshot failed to be cloned</span> |
| <span class="source-line-no">1688</span><span id="line-1688"> * @throws IllegalArgumentException if the specified table has not a valid name</span> |
| <span class="source-line-no">1689</span><span id="line-1689"> */</span> |
| <span class="source-line-no">1690</span><span id="line-1690"> default void cloneSnapshot(String snapshotName, TableName tableName, boolean restoreAcl)</span> |
| <span class="source-line-no">1691</span><span id="line-1691"> throws IOException, TableExistsException, RestoreSnapshotException {</span> |
| <span class="source-line-no">1692</span><span id="line-1692"> get(cloneSnapshotAsync(snapshotName, tableName, restoreAcl), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">1693</span><span id="line-1693"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1694</span><span id="line-1694"> }</span> |
| <span class="source-line-no">1695</span><span id="line-1695"></span> |
| <span class="source-line-no">1696</span><span id="line-1696"> /**</span> |
| <span class="source-line-no">1697</span><span id="line-1697"> * Create a new table by cloning the snapshot content, but does not block and wait for it to be</span> |
| <span class="source-line-no">1698</span><span id="line-1698"> * completely cloned. You can use Future.get(long, TimeUnit) to wait on the operation to complete.</span> |
| <span class="source-line-no">1699</span><span id="line-1699"> * It may throw ExecutionException if there was an error while executing the operation or</span> |
| <span class="source-line-no">1700</span><span id="line-1700"> * TimeoutException in case the wait timeout was not long enough to allow the operation to</span> |
| <span class="source-line-no">1701</span><span id="line-1701"> * complete.</span> |
| <span class="source-line-no">1702</span><span id="line-1702"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">1703</span><span id="line-1703"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">1704</span><span id="line-1704"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1705</span><span id="line-1705"> * @throws TableExistsException if table to be cloned already exists</span> |
| <span class="source-line-no">1706</span><span id="line-1706"> * @return the result of the async clone snapshot. You can use Future.get(long, TimeUnit) to wait</span> |
| <span class="source-line-no">1707</span><span id="line-1707"> * on the operation to complete.</span> |
| <span class="source-line-no">1708</span><span id="line-1708"> */</span> |
| <span class="source-line-no">1709</span><span id="line-1709"> default Future<Void> cloneSnapshotAsync(String snapshotName, TableName tableName)</span> |
| <span class="source-line-no">1710</span><span id="line-1710"> throws IOException, TableExistsException {</span> |
| <span class="source-line-no">1711</span><span id="line-1711"> return cloneSnapshotAsync(snapshotName, tableName, false);</span> |
| <span class="source-line-no">1712</span><span id="line-1712"> }</span> |
| <span class="source-line-no">1713</span><span id="line-1713"></span> |
| <span class="source-line-no">1714</span><span id="line-1714"> /**</span> |
| <span class="source-line-no">1715</span><span id="line-1715"> * Create a new table by cloning the snapshot content.</span> |
| <span class="source-line-no">1716</span><span id="line-1716"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">1717</span><span id="line-1717"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">1718</span><span id="line-1718"> * @param restoreAcl <code>true</code> to clone acl into newly created table</span> |
| <span class="source-line-no">1719</span><span id="line-1719"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1720</span><span id="line-1720"> * @throws TableExistsException if table to be created already exists</span> |
| <span class="source-line-no">1721</span><span id="line-1721"> * @throws RestoreSnapshotException if snapshot failed to be cloned</span> |
| <span class="source-line-no">1722</span><span id="line-1722"> * @throws IllegalArgumentException if the specified table has not a valid name</span> |
| <span class="source-line-no">1723</span><span id="line-1723"> */</span> |
| <span class="source-line-no">1724</span><span id="line-1724"> default Future<Void> cloneSnapshotAsync(String snapshotName, TableName tableName,</span> |
| <span class="source-line-no">1725</span><span id="line-1725"> boolean restoreAcl) throws IOException, TableExistsException, RestoreSnapshotException {</span> |
| <span class="source-line-no">1726</span><span id="line-1726"> return cloneSnapshotAsync(snapshotName, tableName, restoreAcl, null);</span> |
| <span class="source-line-no">1727</span><span id="line-1727"> }</span> |
| <span class="source-line-no">1728</span><span id="line-1728"></span> |
| <span class="source-line-no">1729</span><span id="line-1729"> /**</span> |
| <span class="source-line-no">1730</span><span id="line-1730"> * Create a new table by cloning the snapshot content.</span> |
| <span class="source-line-no">1731</span><span id="line-1731"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">1732</span><span id="line-1732"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">1733</span><span id="line-1733"> * @param restoreAcl <code>true</code> to clone acl into newly created table</span> |
| <span class="source-line-no">1734</span><span id="line-1734"> * @param customSFT specify the StroreFileTracker used for the table</span> |
| <span class="source-line-no">1735</span><span id="line-1735"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1736</span><span id="line-1736"> * @throws TableExistsException if table to be created already exists</span> |
| <span class="source-line-no">1737</span><span id="line-1737"> * @throws RestoreSnapshotException if snapshot failed to be cloned</span> |
| <span class="source-line-no">1738</span><span id="line-1738"> * @throws IllegalArgumentException if the specified table has not a valid name</span> |
| <span class="source-line-no">1739</span><span id="line-1739"> */</span> |
| <span class="source-line-no">1740</span><span id="line-1740"> Future<Void> cloneSnapshotAsync(String snapshotName, TableName tableName, boolean restoreAcl,</span> |
| <span class="source-line-no">1741</span><span id="line-1741"> String customSFT) throws IOException, TableExistsException, RestoreSnapshotException;</span> |
| <span class="source-line-no">1742</span><span id="line-1742"></span> |
| <span class="source-line-no">1743</span><span id="line-1743"> /**</span> |
| <span class="source-line-no">1744</span><span id="line-1744"> * Execute a distributed procedure on a cluster.</span> |
| <span class="source-line-no">1745</span><span id="line-1745"> * @param signature A distributed procedure is uniquely identified by its signature (default the</span> |
| <span class="source-line-no">1746</span><span id="line-1746"> * root ZK node name of the procedure).</span> |
| <span class="source-line-no">1747</span><span id="line-1747"> * @param instance The instance name of the procedure. For some procedures, this parameter is</span> |
| <span class="source-line-no">1748</span><span id="line-1748"> * optional.</span> |
| <span class="source-line-no">1749</span><span id="line-1749"> * @param props Property/Value pairs of properties passing to the procedure</span> |
| <span class="source-line-no">1750</span><span id="line-1750"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1751</span><span id="line-1751"> */</span> |
| <span class="source-line-no">1752</span><span id="line-1752"> void execProcedure(String signature, String instance, Map<String, String> props)</span> |
| <span class="source-line-no">1753</span><span id="line-1753"> throws IOException;</span> |
| <span class="source-line-no">1754</span><span id="line-1754"></span> |
| <span class="source-line-no">1755</span><span id="line-1755"> /**</span> |
| <span class="source-line-no">1756</span><span id="line-1756"> * Execute a distributed procedure on a cluster.</span> |
| <span class="source-line-no">1757</span><span id="line-1757"> * @param signature A distributed procedure is uniquely identified by its signature (default the</span> |
| <span class="source-line-no">1758</span><span id="line-1758"> * root ZK node name of the procedure).</span> |
| <span class="source-line-no">1759</span><span id="line-1759"> * @param instance The instance name of the procedure. For some procedures, this parameter is</span> |
| <span class="source-line-no">1760</span><span id="line-1760"> * optional.</span> |
| <span class="source-line-no">1761</span><span id="line-1761"> * @param props Property/Value pairs of properties passing to the procedure</span> |
| <span class="source-line-no">1762</span><span id="line-1762"> * @return data returned after procedure execution. null if no return data.</span> |
| <span class="source-line-no">1763</span><span id="line-1763"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1764</span><span id="line-1764"> */</span> |
| <span class="source-line-no">1765</span><span id="line-1765"> byte[] execProcedureWithReturn(String signature, String instance, Map<String, String> props)</span> |
| <span class="source-line-no">1766</span><span id="line-1766"> throws IOException;</span> |
| <span class="source-line-no">1767</span><span id="line-1767"></span> |
| <span class="source-line-no">1768</span><span id="line-1768"> /**</span> |
| <span class="source-line-no">1769</span><span id="line-1769"> * Check the current state of the specified procedure. There are three possible states:</span> |
| <span class="source-line-no">1770</span><span id="line-1770"> * <ol></span> |
| <span class="source-line-no">1771</span><span id="line-1771"> * <li>running - returns <tt>false</tt></li></span> |
| <span class="source-line-no">1772</span><span id="line-1772"> * <li>finished - returns <tt>true</tt></li></span> |
| <span class="source-line-no">1773</span><span id="line-1773"> * <li>finished with error - throws the exception that caused the procedure to fail</li></span> |
| <span class="source-line-no">1774</span><span id="line-1774"> * </ol></span> |
| <span class="source-line-no">1775</span><span id="line-1775"> * @param signature The signature that uniquely identifies a procedure</span> |
| <span class="source-line-no">1776</span><span id="line-1776"> * @param instance The instance name of the procedure</span> |
| <span class="source-line-no">1777</span><span id="line-1777"> * @param props Property/Value pairs of properties passing to the procedure</span> |
| <span class="source-line-no">1778</span><span id="line-1778"> * @return <code>true</code> if the specified procedure is finished successfully,</span> |
| <span class="source-line-no">1779</span><span id="line-1779"> * <code>false</code> if it is still running</span> |
| <span class="source-line-no">1780</span><span id="line-1780"> * @throws IOException if the specified procedure finished with error</span> |
| <span class="source-line-no">1781</span><span id="line-1781"> */</span> |
| <span class="source-line-no">1782</span><span id="line-1782"> boolean isProcedureFinished(String signature, String instance, Map<String, String> props)</span> |
| <span class="source-line-no">1783</span><span id="line-1783"> throws IOException;</span> |
| <span class="source-line-no">1784</span><span id="line-1784"></span> |
| <span class="source-line-no">1785</span><span id="line-1785"> /**</span> |
| <span class="source-line-no">1786</span><span id="line-1786"> * List completed snapshots.</span> |
| <span class="source-line-no">1787</span><span id="line-1787"> * @return a list of snapshot descriptors for completed snapshots</span> |
| <span class="source-line-no">1788</span><span id="line-1788"> * @throws IOException if a network error occurs</span> |
| <span class="source-line-no">1789</span><span id="line-1789"> */</span> |
| <span class="source-line-no">1790</span><span id="line-1790"> List<SnapshotDescription> listSnapshots() throws IOException;</span> |
| <span class="source-line-no">1791</span><span id="line-1791"></span> |
| <span class="source-line-no">1792</span><span id="line-1792"> /**</span> |
| <span class="source-line-no">1793</span><span id="line-1793"> * List all the completed snapshots matching the given pattern.</span> |
| <span class="source-line-no">1794</span><span id="line-1794"> * @param pattern The compiled regular expression to match against</span> |
| <span class="source-line-no">1795</span><span id="line-1795"> * @return list of SnapshotDescription</span> |
| <span class="source-line-no">1796</span><span id="line-1796"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1797</span><span id="line-1797"> */</span> |
| <span class="source-line-no">1798</span><span id="line-1798"> List<SnapshotDescription> listSnapshots(Pattern pattern) throws IOException;</span> |
| <span class="source-line-no">1799</span><span id="line-1799"></span> |
| <span class="source-line-no">1800</span><span id="line-1800"> /**</span> |
| <span class="source-line-no">1801</span><span id="line-1801"> * List all the completed snapshots matching the given table name regular expression and snapshot</span> |
| <span class="source-line-no">1802</span><span id="line-1802"> * name regular expression.</span> |
| <span class="source-line-no">1803</span><span id="line-1803"> * @param tableNamePattern The compiled table name regular expression to match against</span> |
| <span class="source-line-no">1804</span><span id="line-1804"> * @param snapshotNamePattern The compiled snapshot name regular expression to match against</span> |
| <span class="source-line-no">1805</span><span id="line-1805"> * @return list of completed SnapshotDescription</span> |
| <span class="source-line-no">1806</span><span id="line-1806"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1807</span><span id="line-1807"> */</span> |
| <span class="source-line-no">1808</span><span id="line-1808"> List<SnapshotDescription> listTableSnapshots(Pattern tableNamePattern,</span> |
| <span class="source-line-no">1809</span><span id="line-1809"> Pattern snapshotNamePattern) throws IOException;</span> |
| <span class="source-line-no">1810</span><span id="line-1810"></span> |
| <span class="source-line-no">1811</span><span id="line-1811"> /**</span> |
| <span class="source-line-no">1812</span><span id="line-1812"> * Delete an existing snapshot.</span> |
| <span class="source-line-no">1813</span><span id="line-1813"> * @param snapshotName name of the snapshot</span> |
| <span class="source-line-no">1814</span><span id="line-1814"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1815</span><span id="line-1815"> */</span> |
| <span class="source-line-no">1816</span><span id="line-1816"> void deleteSnapshot(String snapshotName) throws IOException;</span> |
| <span class="source-line-no">1817</span><span id="line-1817"></span> |
| <span class="source-line-no">1818</span><span id="line-1818"> /**</span> |
| <span class="source-line-no">1819</span><span id="line-1819"> * Delete existing snapshots whose names match the pattern passed.</span> |
| <span class="source-line-no">1820</span><span id="line-1820"> * @param pattern pattern for names of the snapshot to match</span> |
| <span class="source-line-no">1821</span><span id="line-1821"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1822</span><span id="line-1822"> */</span> |
| <span class="source-line-no">1823</span><span id="line-1823"> void deleteSnapshots(Pattern pattern) throws IOException;</span> |
| <span class="source-line-no">1824</span><span id="line-1824"></span> |
| <span class="source-line-no">1825</span><span id="line-1825"> /**</span> |
| <span class="source-line-no">1826</span><span id="line-1826"> * Delete all existing snapshots matching the given table name regular expression and snapshot</span> |
| <span class="source-line-no">1827</span><span id="line-1827"> * name regular expression.</span> |
| <span class="source-line-no">1828</span><span id="line-1828"> * @param tableNamePattern The compiled table name regular expression to match against</span> |
| <span class="source-line-no">1829</span><span id="line-1829"> * @param snapshotNamePattern The compiled snapshot name regular expression to match against</span> |
| <span class="source-line-no">1830</span><span id="line-1830"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1831</span><span id="line-1831"> */</span> |
| <span class="source-line-no">1832</span><span id="line-1832"> void deleteTableSnapshots(Pattern tableNamePattern, Pattern snapshotNamePattern)</span> |
| <span class="source-line-no">1833</span><span id="line-1833"> throws IOException;</span> |
| <span class="source-line-no">1834</span><span id="line-1834"></span> |
| <span class="source-line-no">1835</span><span id="line-1835"> /**</span> |
| <span class="source-line-no">1836</span><span id="line-1836"> * Apply the new quota settings.</span> |
| <span class="source-line-no">1837</span><span id="line-1837"> * @param quota the quota settings</span> |
| <span class="source-line-no">1838</span><span id="line-1838"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1839</span><span id="line-1839"> */</span> |
| <span class="source-line-no">1840</span><span id="line-1840"> void setQuota(QuotaSettings quota) throws IOException;</span> |
| <span class="source-line-no">1841</span><span id="line-1841"></span> |
| <span class="source-line-no">1842</span><span id="line-1842"> /**</span> |
| <span class="source-line-no">1843</span><span id="line-1843"> * List the quotas based on the filter.</span> |
| <span class="source-line-no">1844</span><span id="line-1844"> * @param filter the quota settings filter</span> |
| <span class="source-line-no">1845</span><span id="line-1845"> * @return the QuotaSetting list</span> |
| <span class="source-line-no">1846</span><span id="line-1846"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1847</span><span id="line-1847"> */</span> |
| <span class="source-line-no">1848</span><span id="line-1848"> List<QuotaSettings> getQuota(QuotaFilter filter) throws IOException;</span> |
| <span class="source-line-no">1849</span><span id="line-1849"></span> |
| <span class="source-line-no">1850</span><span id="line-1850"> /**</span> |
| <span class="source-line-no">1851</span><span id="line-1851"> * Creates and returns a {@link org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel}</span> |
| <span class="source-line-no">1852</span><span id="line-1852"> * instance connected to the active master.</span> |
| <span class="source-line-no">1853</span><span id="line-1853"> * <p/></span> |
| <span class="source-line-no">1854</span><span id="line-1854"> * The obtained {@link org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel} instance can be</span> |
| <span class="source-line-no">1855</span><span id="line-1855"> * used to access a published coprocessor</span> |
| <span class="source-line-no">1856</span><span id="line-1856"> * {@link org.apache.hbase.thirdparty.com.google.protobuf.Service} using standard protobuf service</span> |
| <span class="source-line-no">1857</span><span id="line-1857"> * invocations:</span> |
| <span class="source-line-no">1858</span><span id="line-1858"> * <p/></span> |
| <span class="source-line-no">1859</span><span id="line-1859"> * <div style="background-color: #cccccc; padding: 2px"> <blockquote></span> |
| <span class="source-line-no">1860</span><span id="line-1860"> *</span> |
| <span class="source-line-no">1861</span><span id="line-1861"> * <pre></span> |
| <span class="source-line-no">1862</span><span id="line-1862"> * CoprocessorRpcChannel channel = myAdmin.coprocessorService();</span> |
| <span class="source-line-no">1863</span><span id="line-1863"> * MyService.BlockingInterface service = MyService.newBlockingStub(channel);</span> |
| <span class="source-line-no">1864</span><span id="line-1864"> * MyCallRequest request = MyCallRequest.newBuilder()</span> |
| <span class="source-line-no">1865</span><span id="line-1865"> * ...</span> |
| <span class="source-line-no">1866</span><span id="line-1866"> * .build();</span> |
| <span class="source-line-no">1867</span><span id="line-1867"> * MyCallResponse response = service.myCall(null, request);</span> |
| <span class="source-line-no">1868</span><span id="line-1868"> * </pre></span> |
| <span class="source-line-no">1869</span><span id="line-1869"> *</span> |
| <span class="source-line-no">1870</span><span id="line-1870"> * </blockquote> </div></span> |
| <span class="source-line-no">1871</span><span id="line-1871"> * @return A MasterCoprocessorRpcChannel instance</span> |
| <span class="source-line-no">1872</span><span id="line-1872"> * @deprecated since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any</span> |
| <span class="source-line-no">1873</span><span id="line-1873"> * more. Use the coprocessorService methods in {@link AsyncAdmin} instead.</span> |
| <span class="source-line-no">1874</span><span id="line-1874"> */</span> |
| <span class="source-line-no">1875</span><span id="line-1875"> @Deprecated</span> |
| <span class="source-line-no">1876</span><span id="line-1876"> CoprocessorRpcChannel coprocessorService();</span> |
| <span class="source-line-no">1877</span><span id="line-1877"></span> |
| <span class="source-line-no">1878</span><span id="line-1878"> /**</span> |
| <span class="source-line-no">1879</span><span id="line-1879"> * Creates and returns a {@link org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel}</span> |
| <span class="source-line-no">1880</span><span id="line-1880"> * instance connected to the passed region server.</span> |
| <span class="source-line-no">1881</span><span id="line-1881"> * <p/></span> |
| <span class="source-line-no">1882</span><span id="line-1882"> * The obtained {@link org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel} instance can be</span> |
| <span class="source-line-no">1883</span><span id="line-1883"> * used to access a published coprocessor</span> |
| <span class="source-line-no">1884</span><span id="line-1884"> * {@link org.apache.hbase.thirdparty.com.google.protobuf.Service} using standard protobuf service</span> |
| <span class="source-line-no">1885</span><span id="line-1885"> * invocations:</span> |
| <span class="source-line-no">1886</span><span id="line-1886"> * <p/></span> |
| <span class="source-line-no">1887</span><span id="line-1887"> * <div style="background-color: #cccccc; padding: 2px"> <blockquote></span> |
| <span class="source-line-no">1888</span><span id="line-1888"> *</span> |
| <span class="source-line-no">1889</span><span id="line-1889"> * <pre></span> |
| <span class="source-line-no">1890</span><span id="line-1890"> * CoprocessorRpcChannel channel = myAdmin.coprocessorService(serverName);</span> |
| <span class="source-line-no">1891</span><span id="line-1891"> * MyService.BlockingInterface service = MyService.newBlockingStub(channel);</span> |
| <span class="source-line-no">1892</span><span id="line-1892"> * MyCallRequest request = MyCallRequest.newBuilder()</span> |
| <span class="source-line-no">1893</span><span id="line-1893"> * ...</span> |
| <span class="source-line-no">1894</span><span id="line-1894"> * .build();</span> |
| <span class="source-line-no">1895</span><span id="line-1895"> * MyCallResponse response = service.myCall(null, request);</span> |
| <span class="source-line-no">1896</span><span id="line-1896"> * </pre></span> |
| <span class="source-line-no">1897</span><span id="line-1897"> *</span> |
| <span class="source-line-no">1898</span><span id="line-1898"> * </blockquote> </div></span> |
| <span class="source-line-no">1899</span><span id="line-1899"> * @param serverName the server name to which the endpoint call is made</span> |
| <span class="source-line-no">1900</span><span id="line-1900"> * @return A RegionServerCoprocessorRpcChannel instance</span> |
| <span class="source-line-no">1901</span><span id="line-1901"> * @deprecated since 3.0.0, will removed in 4.0.0. This is too low level, please stop using it any</span> |
| <span class="source-line-no">1902</span><span id="line-1902"> * more. Use the coprocessorService methods in {@link AsyncAdmin} instead.</span> |
| <span class="source-line-no">1903</span><span id="line-1903"> */</span> |
| <span class="source-line-no">1904</span><span id="line-1904"> @Deprecated</span> |
| <span class="source-line-no">1905</span><span id="line-1905"> CoprocessorRpcChannel coprocessorService(ServerName serverName);</span> |
| <span class="source-line-no">1906</span><span id="line-1906"></span> |
| <span class="source-line-no">1907</span><span id="line-1907"> /**</span> |
| <span class="source-line-no">1908</span><span id="line-1908"> * Update the configuration and trigger an online config change on the regionserver.</span> |
| <span class="source-line-no">1909</span><span id="line-1909"> * @param server : The server whose config needs to be updated.</span> |
| <span class="source-line-no">1910</span><span id="line-1910"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1911</span><span id="line-1911"> */</span> |
| <span class="source-line-no">1912</span><span id="line-1912"> void updateConfiguration(ServerName server) throws IOException;</span> |
| <span class="source-line-no">1913</span><span id="line-1913"></span> |
| <span class="source-line-no">1914</span><span id="line-1914"> /**</span> |
| <span class="source-line-no">1915</span><span id="line-1915"> * Update the configuration and trigger an online config change on all the regionservers.</span> |
| <span class="source-line-no">1916</span><span id="line-1916"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1917</span><span id="line-1917"> */</span> |
| <span class="source-line-no">1918</span><span id="line-1918"> void updateConfiguration() throws IOException;</span> |
| <span class="source-line-no">1919</span><span id="line-1919"></span> |
| <span class="source-line-no">1920</span><span id="line-1920"> /**</span> |
| <span class="source-line-no">1921</span><span id="line-1921"> * Update the configuration and trigger an online config change on all the regionservers in the</span> |
| <span class="source-line-no">1922</span><span id="line-1922"> * RSGroup.</span> |
| <span class="source-line-no">1923</span><span id="line-1923"> * @param groupName the group name</span> |
| <span class="source-line-no">1924</span><span id="line-1924"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1925</span><span id="line-1925"> */</span> |
| <span class="source-line-no">1926</span><span id="line-1926"> void updateConfiguration(String groupName) throws IOException;</span> |
| <span class="source-line-no">1927</span><span id="line-1927"></span> |
| <span class="source-line-no">1928</span><span id="line-1928"> /**</span> |
| <span class="source-line-no">1929</span><span id="line-1929"> * Get the info port of the current master if one is available.</span> |
| <span class="source-line-no">1930</span><span id="line-1930"> * @return master info port</span> |
| <span class="source-line-no">1931</span><span id="line-1931"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1932</span><span id="line-1932"> */</span> |
| <span class="source-line-no">1933</span><span id="line-1933"> default int getMasterInfoPort() throws IOException {</span> |
| <span class="source-line-no">1934</span><span id="line-1934"> return getClusterMetrics(EnumSet.of(Option.MASTER_INFO_PORT)).getMasterInfoPort();</span> |
| <span class="source-line-no">1935</span><span id="line-1935"> }</span> |
| <span class="source-line-no">1936</span><span id="line-1936"></span> |
| <span class="source-line-no">1937</span><span id="line-1937"> /**</span> |
| <span class="source-line-no">1938</span><span id="line-1938"> * Return the set of supported security capabilities.</span> |
| <span class="source-line-no">1939</span><span id="line-1939"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1940</span><span id="line-1940"> */</span> |
| <span class="source-line-no">1941</span><span id="line-1941"> List<SecurityCapability> getSecurityCapabilities() throws IOException;</span> |
| <span class="source-line-no">1942</span><span id="line-1942"></span> |
| <span class="source-line-no">1943</span><span id="line-1943"> /**</span> |
| <span class="source-line-no">1944</span><span id="line-1944"> * Turn the split switch on or off.</span> |
| <span class="source-line-no">1945</span><span id="line-1945"> * @param enabled enabled or not</span> |
| <span class="source-line-no">1946</span><span id="line-1946"> * @param synchronous If <code>true</code>, it waits until current split() call, if outstanding,</span> |
| <span class="source-line-no">1947</span><span id="line-1947"> * to return.</span> |
| <span class="source-line-no">1948</span><span id="line-1948"> * @return Previous switch value</span> |
| <span class="source-line-no">1949</span><span id="line-1949"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1950</span><span id="line-1950"> */</span> |
| <span class="source-line-no">1951</span><span id="line-1951"> boolean splitSwitch(boolean enabled, boolean synchronous) throws IOException;</span> |
| <span class="source-line-no">1952</span><span id="line-1952"></span> |
| <span class="source-line-no">1953</span><span id="line-1953"> /**</span> |
| <span class="source-line-no">1954</span><span id="line-1954"> * Turn the merge switch on or off.</span> |
| <span class="source-line-no">1955</span><span id="line-1955"> * @param enabled enabled or not</span> |
| <span class="source-line-no">1956</span><span id="line-1956"> * @param synchronous If <code>true</code>, it waits until current merge() call, if outstanding,</span> |
| <span class="source-line-no">1957</span><span id="line-1957"> * to return.</span> |
| <span class="source-line-no">1958</span><span id="line-1958"> * @return Previous switch value</span> |
| <span class="source-line-no">1959</span><span id="line-1959"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1960</span><span id="line-1960"> */</span> |
| <span class="source-line-no">1961</span><span id="line-1961"> boolean mergeSwitch(boolean enabled, boolean synchronous) throws IOException;</span> |
| <span class="source-line-no">1962</span><span id="line-1962"></span> |
| <span class="source-line-no">1963</span><span id="line-1963"> /**</span> |
| <span class="source-line-no">1964</span><span id="line-1964"> * Query the current state of the split switch.</span> |
| <span class="source-line-no">1965</span><span id="line-1965"> * @return <code>true</code> if the switch is enabled, <code>false</code> otherwise.</span> |
| <span class="source-line-no">1966</span><span id="line-1966"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1967</span><span id="line-1967"> */</span> |
| <span class="source-line-no">1968</span><span id="line-1968"> boolean isSplitEnabled() throws IOException;</span> |
| <span class="source-line-no">1969</span><span id="line-1969"></span> |
| <span class="source-line-no">1970</span><span id="line-1970"> /**</span> |
| <span class="source-line-no">1971</span><span id="line-1971"> * Query the current state of the merge switch.</span> |
| <span class="source-line-no">1972</span><span id="line-1972"> * @return <code>true</code> if the switch is enabled, <code>false</code> otherwise.</span> |
| <span class="source-line-no">1973</span><span id="line-1973"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1974</span><span id="line-1974"> */</span> |
| <span class="source-line-no">1975</span><span id="line-1975"> boolean isMergeEnabled() throws IOException;</span> |
| <span class="source-line-no">1976</span><span id="line-1976"></span> |
| <span class="source-line-no">1977</span><span id="line-1977"> /**</span> |
| <span class="source-line-no">1978</span><span id="line-1978"> * Add a new replication peer for replicating data to slave cluster.</span> |
| <span class="source-line-no">1979</span><span id="line-1979"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">1980</span><span id="line-1980"> * @param peerConfig configuration for the replication peer</span> |
| <span class="source-line-no">1981</span><span id="line-1981"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1982</span><span id="line-1982"> */</span> |
| <span class="source-line-no">1983</span><span id="line-1983"> default void addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig)</span> |
| <span class="source-line-no">1984</span><span id="line-1984"> throws IOException {</span> |
| <span class="source-line-no">1985</span><span id="line-1985"> addReplicationPeer(peerId, peerConfig, true);</span> |
| <span class="source-line-no">1986</span><span id="line-1986"> }</span> |
| <span class="source-line-no">1987</span><span id="line-1987"></span> |
| <span class="source-line-no">1988</span><span id="line-1988"> /**</span> |
| <span class="source-line-no">1989</span><span id="line-1989"> * Add a new replication peer for replicating data to slave cluster.</span> |
| <span class="source-line-no">1990</span><span id="line-1990"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">1991</span><span id="line-1991"> * @param peerConfig configuration for the replication peer</span> |
| <span class="source-line-no">1992</span><span id="line-1992"> * @param enabled peer state, true if ENABLED and false if DISABLED</span> |
| <span class="source-line-no">1993</span><span id="line-1993"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">1994</span><span id="line-1994"> */</span> |
| <span class="source-line-no">1995</span><span id="line-1995"> default void addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig, boolean enabled)</span> |
| <span class="source-line-no">1996</span><span id="line-1996"> throws IOException {</span> |
| <span class="source-line-no">1997</span><span id="line-1997"> get(addReplicationPeerAsync(peerId, peerConfig, enabled), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">1998</span><span id="line-1998"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">1999</span><span id="line-1999"> }</span> |
| <span class="source-line-no">2000</span><span id="line-2000"></span> |
| <span class="source-line-no">2001</span><span id="line-2001"> /**</span> |
| <span class="source-line-no">2002</span><span id="line-2002"> * Add a new replication peer but does not block and wait for it.</span> |
| <span class="source-line-no">2003</span><span id="line-2003"> * <p/></span> |
| <span class="source-line-no">2004</span><span id="line-2004"> * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">2005</span><span id="line-2005"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">2006</span><span id="line-2006"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">2007</span><span id="line-2007"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2008</span><span id="line-2008"> * @param peerConfig configuration for the replication peer</span> |
| <span class="source-line-no">2009</span><span id="line-2009"> * @return the result of the async operation</span> |
| <span class="source-line-no">2010</span><span id="line-2010"> * @throws IOException IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2011</span><span id="line-2011"> */</span> |
| <span class="source-line-no">2012</span><span id="line-2012"> default Future<Void> addReplicationPeerAsync(String peerId, ReplicationPeerConfig peerConfig)</span> |
| <span class="source-line-no">2013</span><span id="line-2013"> throws IOException {</span> |
| <span class="source-line-no">2014</span><span id="line-2014"> return addReplicationPeerAsync(peerId, peerConfig, true);</span> |
| <span class="source-line-no">2015</span><span id="line-2015"> }</span> |
| <span class="source-line-no">2016</span><span id="line-2016"></span> |
| <span class="source-line-no">2017</span><span id="line-2017"> /**</span> |
| <span class="source-line-no">2018</span><span id="line-2018"> * Add a new replication peer but does not block and wait for it.</span> |
| <span class="source-line-no">2019</span><span id="line-2019"> * <p></span> |
| <span class="source-line-no">2020</span><span id="line-2020"> * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">2021</span><span id="line-2021"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">2022</span><span id="line-2022"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">2023</span><span id="line-2023"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2024</span><span id="line-2024"> * @param peerConfig configuration for the replication peer</span> |
| <span class="source-line-no">2025</span><span id="line-2025"> * @param enabled peer state, true if ENABLED and false if DISABLED</span> |
| <span class="source-line-no">2026</span><span id="line-2026"> * @return the result of the async operation</span> |
| <span class="source-line-no">2027</span><span id="line-2027"> * @throws IOException IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2028</span><span id="line-2028"> */</span> |
| <span class="source-line-no">2029</span><span id="line-2029"> Future<Void> addReplicationPeerAsync(String peerId, ReplicationPeerConfig peerConfig,</span> |
| <span class="source-line-no">2030</span><span id="line-2030"> boolean enabled) throws IOException;</span> |
| <span class="source-line-no">2031</span><span id="line-2031"></span> |
| <span class="source-line-no">2032</span><span id="line-2032"> /**</span> |
| <span class="source-line-no">2033</span><span id="line-2033"> * Remove a peer and stop the replication.</span> |
| <span class="source-line-no">2034</span><span id="line-2034"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2035</span><span id="line-2035"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2036</span><span id="line-2036"> */</span> |
| <span class="source-line-no">2037</span><span id="line-2037"> default void removeReplicationPeer(String peerId) throws IOException {</span> |
| <span class="source-line-no">2038</span><span id="line-2038"> get(removeReplicationPeerAsync(peerId), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">2039</span><span id="line-2039"> }</span> |
| <span class="source-line-no">2040</span><span id="line-2040"></span> |
| <span class="source-line-no">2041</span><span id="line-2041"> /**</span> |
| <span class="source-line-no">2042</span><span id="line-2042"> * Remove a replication peer but does not block and wait for it.</span> |
| <span class="source-line-no">2043</span><span id="line-2043"> * <p></span> |
| <span class="source-line-no">2044</span><span id="line-2044"> * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">2045</span><span id="line-2045"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">2046</span><span id="line-2046"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">2047</span><span id="line-2047"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2048</span><span id="line-2048"> * @return the result of the async operation</span> |
| <span class="source-line-no">2049</span><span id="line-2049"> * @throws IOException IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2050</span><span id="line-2050"> */</span> |
| <span class="source-line-no">2051</span><span id="line-2051"> Future<Void> removeReplicationPeerAsync(String peerId) throws IOException;</span> |
| <span class="source-line-no">2052</span><span id="line-2052"></span> |
| <span class="source-line-no">2053</span><span id="line-2053"> /**</span> |
| <span class="source-line-no">2054</span><span id="line-2054"> * Restart the replication stream to the specified peer.</span> |
| <span class="source-line-no">2055</span><span id="line-2055"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2056</span><span id="line-2056"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2057</span><span id="line-2057"> */</span> |
| <span class="source-line-no">2058</span><span id="line-2058"> default void enableReplicationPeer(String peerId) throws IOException {</span> |
| <span class="source-line-no">2059</span><span id="line-2059"> get(enableReplicationPeerAsync(peerId), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">2060</span><span id="line-2060"> }</span> |
| <span class="source-line-no">2061</span><span id="line-2061"></span> |
| <span class="source-line-no">2062</span><span id="line-2062"> /**</span> |
| <span class="source-line-no">2063</span><span id="line-2063"> * Enable a replication peer but does not block and wait for it.</span> |
| <span class="source-line-no">2064</span><span id="line-2064"> * <p></span> |
| <span class="source-line-no">2065</span><span id="line-2065"> * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">2066</span><span id="line-2066"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">2067</span><span id="line-2067"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">2068</span><span id="line-2068"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2069</span><span id="line-2069"> * @return the result of the async operation</span> |
| <span class="source-line-no">2070</span><span id="line-2070"> * @throws IOException IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2071</span><span id="line-2071"> */</span> |
| <span class="source-line-no">2072</span><span id="line-2072"> Future<Void> enableReplicationPeerAsync(String peerId) throws IOException;</span> |
| <span class="source-line-no">2073</span><span id="line-2073"></span> |
| <span class="source-line-no">2074</span><span id="line-2074"> /**</span> |
| <span class="source-line-no">2075</span><span id="line-2075"> * Stop the replication stream to the specified peer.</span> |
| <span class="source-line-no">2076</span><span id="line-2076"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2077</span><span id="line-2077"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2078</span><span id="line-2078"> */</span> |
| <span class="source-line-no">2079</span><span id="line-2079"> default void disableReplicationPeer(String peerId) throws IOException {</span> |
| <span class="source-line-no">2080</span><span id="line-2080"> get(disableReplicationPeerAsync(peerId), getSyncWaitTimeout(), TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">2081</span><span id="line-2081"> }</span> |
| <span class="source-line-no">2082</span><span id="line-2082"></span> |
| <span class="source-line-no">2083</span><span id="line-2083"> /**</span> |
| <span class="source-line-no">2084</span><span id="line-2084"> * Disable a replication peer but does not block and wait for it.</span> |
| <span class="source-line-no">2085</span><span id="line-2085"> * <p/></span> |
| <span class="source-line-no">2086</span><span id="line-2086"> * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">2087</span><span id="line-2087"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">2088</span><span id="line-2088"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">2089</span><span id="line-2089"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2090</span><span id="line-2090"> * @return the result of the async operation</span> |
| <span class="source-line-no">2091</span><span id="line-2091"> * @throws IOException IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2092</span><span id="line-2092"> */</span> |
| <span class="source-line-no">2093</span><span id="line-2093"> Future<Void> disableReplicationPeerAsync(String peerId) throws IOException;</span> |
| <span class="source-line-no">2094</span><span id="line-2094"></span> |
| <span class="source-line-no">2095</span><span id="line-2095"> /**</span> |
| <span class="source-line-no">2096</span><span id="line-2096"> * Returns the configured ReplicationPeerConfig for the specified peer.</span> |
| <span class="source-line-no">2097</span><span id="line-2097"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2098</span><span id="line-2098"> * @return ReplicationPeerConfig for the peer</span> |
| <span class="source-line-no">2099</span><span id="line-2099"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2100</span><span id="line-2100"> */</span> |
| <span class="source-line-no">2101</span><span id="line-2101"> ReplicationPeerConfig getReplicationPeerConfig(String peerId) throws IOException;</span> |
| <span class="source-line-no">2102</span><span id="line-2102"></span> |
| <span class="source-line-no">2103</span><span id="line-2103"> /**</span> |
| <span class="source-line-no">2104</span><span id="line-2104"> * Update the peerConfig for the specified peer.</span> |
| <span class="source-line-no">2105</span><span id="line-2105"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2106</span><span id="line-2106"> * @param peerConfig new config for the replication peer</span> |
| <span class="source-line-no">2107</span><span id="line-2107"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2108</span><span id="line-2108"> */</span> |
| <span class="source-line-no">2109</span><span id="line-2109"> default void updateReplicationPeerConfig(String peerId, ReplicationPeerConfig peerConfig)</span> |
| <span class="source-line-no">2110</span><span id="line-2110"> throws IOException {</span> |
| <span class="source-line-no">2111</span><span id="line-2111"> get(updateReplicationPeerConfigAsync(peerId, peerConfig), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">2112</span><span id="line-2112"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">2113</span><span id="line-2113"> }</span> |
| <span class="source-line-no">2114</span><span id="line-2114"></span> |
| <span class="source-line-no">2115</span><span id="line-2115"> /**</span> |
| <span class="source-line-no">2116</span><span id="line-2116"> * Update the peerConfig for the specified peer but does not block and wait for it.</span> |
| <span class="source-line-no">2117</span><span id="line-2117"> * <p/></span> |
| <span class="source-line-no">2118</span><span id="line-2118"> * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">2119</span><span id="line-2119"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">2120</span><span id="line-2120"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">2121</span><span id="line-2121"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2122</span><span id="line-2122"> * @param peerConfig new config for the replication peer</span> |
| <span class="source-line-no">2123</span><span id="line-2123"> * @return the result of the async operation</span> |
| <span class="source-line-no">2124</span><span id="line-2124"> * @throws IOException IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2125</span><span id="line-2125"> */</span> |
| <span class="source-line-no">2126</span><span id="line-2126"> Future<Void> updateReplicationPeerConfigAsync(String peerId, ReplicationPeerConfig peerConfig)</span> |
| <span class="source-line-no">2127</span><span id="line-2127"> throws IOException;</span> |
| <span class="source-line-no">2128</span><span id="line-2128"></span> |
| <span class="source-line-no">2129</span><span id="line-2129"> /**</span> |
| <span class="source-line-no">2130</span><span id="line-2130"> * Append the replicable table column family config from the specified peer.</span> |
| <span class="source-line-no">2131</span><span id="line-2131"> * @param id a short that identifies the cluster</span> |
| <span class="source-line-no">2132</span><span id="line-2132"> * @param tableCfs A map from tableName to column family names</span> |
| <span class="source-line-no">2133</span><span id="line-2133"> * @throws ReplicationException if tableCfs has conflict with existing config</span> |
| <span class="source-line-no">2134</span><span id="line-2134"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2135</span><span id="line-2135"> */</span> |
| <span class="source-line-no">2136</span><span id="line-2136"> default void appendReplicationPeerTableCFs(String id, Map<TableName, List<String>> tableCfs)</span> |
| <span class="source-line-no">2137</span><span id="line-2137"> throws ReplicationException, IOException {</span> |
| <span class="source-line-no">2138</span><span id="line-2138"> if (tableCfs == null) {</span> |
| <span class="source-line-no">2139</span><span id="line-2139"> throw new ReplicationException("tableCfs is null");</span> |
| <span class="source-line-no">2140</span><span id="line-2140"> }</span> |
| <span class="source-line-no">2141</span><span id="line-2141"> ReplicationPeerConfig peerConfig = getReplicationPeerConfig(id);</span> |
| <span class="source-line-no">2142</span><span id="line-2142"> ReplicationPeerConfig newPeerConfig =</span> |
| <span class="source-line-no">2143</span><span id="line-2143"> ReplicationPeerConfigUtil.appendTableCFsToReplicationPeerConfig(tableCfs, peerConfig);</span> |
| <span class="source-line-no">2144</span><span id="line-2144"> updateReplicationPeerConfig(id, newPeerConfig);</span> |
| <span class="source-line-no">2145</span><span id="line-2145"> }</span> |
| <span class="source-line-no">2146</span><span id="line-2146"></span> |
| <span class="source-line-no">2147</span><span id="line-2147"> /**</span> |
| <span class="source-line-no">2148</span><span id="line-2148"> * Remove some table-cfs from config of the specified peer.</span> |
| <span class="source-line-no">2149</span><span id="line-2149"> * @param id a short name that identifies the cluster</span> |
| <span class="source-line-no">2150</span><span id="line-2150"> * @param tableCfs A map from tableName to column family names</span> |
| <span class="source-line-no">2151</span><span id="line-2151"> * @throws ReplicationException if tableCfs has conflict with existing config</span> |
| <span class="source-line-no">2152</span><span id="line-2152"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2153</span><span id="line-2153"> */</span> |
| <span class="source-line-no">2154</span><span id="line-2154"> default void removeReplicationPeerTableCFs(String id, Map<TableName, List<String>> tableCfs)</span> |
| <span class="source-line-no">2155</span><span id="line-2155"> throws ReplicationException, IOException {</span> |
| <span class="source-line-no">2156</span><span id="line-2156"> if (tableCfs == null) {</span> |
| <span class="source-line-no">2157</span><span id="line-2157"> throw new ReplicationException("tableCfs is null");</span> |
| <span class="source-line-no">2158</span><span id="line-2158"> }</span> |
| <span class="source-line-no">2159</span><span id="line-2159"> ReplicationPeerConfig peerConfig = getReplicationPeerConfig(id);</span> |
| <span class="source-line-no">2160</span><span id="line-2160"> ReplicationPeerConfig newPeerConfig =</span> |
| <span class="source-line-no">2161</span><span id="line-2161"> ReplicationPeerConfigUtil.removeTableCFsFromReplicationPeerConfig(tableCfs, peerConfig, id);</span> |
| <span class="source-line-no">2162</span><span id="line-2162"> updateReplicationPeerConfig(id, newPeerConfig);</span> |
| <span class="source-line-no">2163</span><span id="line-2163"> }</span> |
| <span class="source-line-no">2164</span><span id="line-2164"></span> |
| <span class="source-line-no">2165</span><span id="line-2165"> /**</span> |
| <span class="source-line-no">2166</span><span id="line-2166"> * Return a list of replication peers.</span> |
| <span class="source-line-no">2167</span><span id="line-2167"> * @return a list of replication peers description</span> |
| <span class="source-line-no">2168</span><span id="line-2168"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2169</span><span id="line-2169"> */</span> |
| <span class="source-line-no">2170</span><span id="line-2170"> List<ReplicationPeerDescription> listReplicationPeers() throws IOException;</span> |
| <span class="source-line-no">2171</span><span id="line-2171"></span> |
| <span class="source-line-no">2172</span><span id="line-2172"> /**</span> |
| <span class="source-line-no">2173</span><span id="line-2173"> * Return a list of replication peers.</span> |
| <span class="source-line-no">2174</span><span id="line-2174"> * @param pattern The compiled regular expression to match peer id</span> |
| <span class="source-line-no">2175</span><span id="line-2175"> * @return a list of replication peers description</span> |
| <span class="source-line-no">2176</span><span id="line-2176"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2177</span><span id="line-2177"> */</span> |
| <span class="source-line-no">2178</span><span id="line-2178"> List<ReplicationPeerDescription> listReplicationPeers(Pattern pattern) throws IOException;</span> |
| <span class="source-line-no">2179</span><span id="line-2179"></span> |
| <span class="source-line-no">2180</span><span id="line-2180"> /**</span> |
| <span class="source-line-no">2181</span><span id="line-2181"> * Transit current cluster to a new state in a synchronous replication peer.</span> |
| <span class="source-line-no">2182</span><span id="line-2182"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2183</span><span id="line-2183"> * @param state a new state of current cluster</span> |
| <span class="source-line-no">2184</span><span id="line-2184"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2185</span><span id="line-2185"> */</span> |
| <span class="source-line-no">2186</span><span id="line-2186"> default void transitReplicationPeerSyncReplicationState(String peerId, SyncReplicationState state)</span> |
| <span class="source-line-no">2187</span><span id="line-2187"> throws IOException {</span> |
| <span class="source-line-no">2188</span><span id="line-2188"> get(transitReplicationPeerSyncReplicationStateAsync(peerId, state), getSyncWaitTimeout(),</span> |
| <span class="source-line-no">2189</span><span id="line-2189"> TimeUnit.MILLISECONDS);</span> |
| <span class="source-line-no">2190</span><span id="line-2190"> }</span> |
| <span class="source-line-no">2191</span><span id="line-2191"></span> |
| <span class="source-line-no">2192</span><span id="line-2192"> /**</span> |
| <span class="source-line-no">2193</span><span id="line-2193"> * Transit current cluster to a new state in a synchronous replication peer. But does not block</span> |
| <span class="source-line-no">2194</span><span id="line-2194"> * and wait for it.</span> |
| <span class="source-line-no">2195</span><span id="line-2195"> * <p></span> |
| <span class="source-line-no">2196</span><span id="line-2196"> * You can use Future.get(long, TimeUnit) to wait on the operation to complete. It may throw</span> |
| <span class="source-line-no">2197</span><span id="line-2197"> * ExecutionException if there was an error while executing the operation or TimeoutException in</span> |
| <span class="source-line-no">2198</span><span id="line-2198"> * case the wait timeout was not long enough to allow the operation to complete.</span> |
| <span class="source-line-no">2199</span><span id="line-2199"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2200</span><span id="line-2200"> * @param state a new state of current cluster</span> |
| <span class="source-line-no">2201</span><span id="line-2201"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2202</span><span id="line-2202"> */</span> |
| <span class="source-line-no">2203</span><span id="line-2203"> Future<Void> transitReplicationPeerSyncReplicationStateAsync(String peerId,</span> |
| <span class="source-line-no">2204</span><span id="line-2204"> SyncReplicationState state) throws IOException;</span> |
| <span class="source-line-no">2205</span><span id="line-2205"></span> |
| <span class="source-line-no">2206</span><span id="line-2206"> /**</span> |
| <span class="source-line-no">2207</span><span id="line-2207"> * Get the current cluster state in a synchronous replication peer.</span> |
| <span class="source-line-no">2208</span><span id="line-2208"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">2209</span><span id="line-2209"> * @return the current cluster state</span> |
| <span class="source-line-no">2210</span><span id="line-2210"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2211</span><span id="line-2211"> */</span> |
| <span class="source-line-no">2212</span><span id="line-2212"> default SyncReplicationState getReplicationPeerSyncReplicationState(String peerId)</span> |
| <span class="source-line-no">2213</span><span id="line-2213"> throws IOException {</span> |
| <span class="source-line-no">2214</span><span id="line-2214"> List<ReplicationPeerDescription> peers = listReplicationPeers(Pattern.compile(peerId));</span> |
| <span class="source-line-no">2215</span><span id="line-2215"> if (peers.isEmpty() || !peers.get(0).getPeerId().equals(peerId)) {</span> |
| <span class="source-line-no">2216</span><span id="line-2216"> throw new IOException("Replication peer " + peerId + " does not exist");</span> |
| <span class="source-line-no">2217</span><span id="line-2217"> }</span> |
| <span class="source-line-no">2218</span><span id="line-2218"> return peers.get(0).getSyncReplicationState();</span> |
| <span class="source-line-no">2219</span><span id="line-2219"> }</span> |
| <span class="source-line-no">2220</span><span id="line-2220"></span> |
| <span class="source-line-no">2221</span><span id="line-2221"> /**</span> |
| <span class="source-line-no">2222</span><span id="line-2222"> * Check if a replication peer is enabled.</span> |
| <span class="source-line-no">2223</span><span id="line-2223"> * @param peerId id of replication peer to check</span> |
| <span class="source-line-no">2224</span><span id="line-2224"> * @return <code>true</code> if replication peer is enabled</span> |
| <span class="source-line-no">2225</span><span id="line-2225"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2226</span><span id="line-2226"> */</span> |
| <span class="source-line-no">2227</span><span id="line-2227"> boolean isReplicationPeerEnabled(String peerId) throws IOException;</span> |
| <span class="source-line-no">2228</span><span id="line-2228"></span> |
| <span class="source-line-no">2229</span><span id="line-2229"> /**</span> |
| <span class="source-line-no">2230</span><span id="line-2230"> * Enable or disable replication peer modification.</span> |
| <span class="source-line-no">2231</span><span id="line-2231"> * <p/></span> |
| <span class="source-line-no">2232</span><span id="line-2232"> * This is especially useful when you want to change the replication peer storage.</span> |
| <span class="source-line-no">2233</span><span id="line-2233"> * @param on {@code true} means enable, otherwise disable</span> |
| <span class="source-line-no">2234</span><span id="line-2234"> * @return the previous enable/disable state</span> |
| <span class="source-line-no">2235</span><span id="line-2235"> */</span> |
| <span class="source-line-no">2236</span><span id="line-2236"> default boolean replicationPeerModificationSwitch(boolean on) throws IOException {</span> |
| <span class="source-line-no">2237</span><span id="line-2237"> return replicationPeerModificationSwitch(on, false);</span> |
| <span class="source-line-no">2238</span><span id="line-2238"> }</span> |
| <span class="source-line-no">2239</span><span id="line-2239"></span> |
| <span class="source-line-no">2240</span><span id="line-2240"> /**</span> |
| <span class="source-line-no">2241</span><span id="line-2241"> * Enable or disable replication peer modification.</span> |
| <span class="source-line-no">2242</span><span id="line-2242"> * <p/></span> |
| <span class="source-line-no">2243</span><span id="line-2243"> * This is especially useful when you want to change the replication peer storage.</span> |
| <span class="source-line-no">2244</span><span id="line-2244"> * @param on {@code true} means enable, otherwise disable</span> |
| <span class="source-line-no">2245</span><span id="line-2245"> * @param drainProcedures if {@code true}, will wait until all the running replication peer</span> |
| <span class="source-line-no">2246</span><span id="line-2246"> * modification procedures finish</span> |
| <span class="source-line-no">2247</span><span id="line-2247"> * @return the previous enable/disable state</span> |
| <span class="source-line-no">2248</span><span id="line-2248"> */</span> |
| <span class="source-line-no">2249</span><span id="line-2249"> boolean replicationPeerModificationSwitch(boolean on, boolean drainProcedures) throws IOException;</span> |
| <span class="source-line-no">2250</span><span id="line-2250"></span> |
| <span class="source-line-no">2251</span><span id="line-2251"> /**</span> |
| <span class="source-line-no">2252</span><span id="line-2252"> * Check whether replication peer modification is enabled.</span> |
| <span class="source-line-no">2253</span><span id="line-2253"> * @return {@code true} if modification is enabled, otherwise {@code false}</span> |
| <span class="source-line-no">2254</span><span id="line-2254"> */</span> |
| <span class="source-line-no">2255</span><span id="line-2255"> boolean isReplicationPeerModificationEnabled() throws IOException;</span> |
| <span class="source-line-no">2256</span><span id="line-2256"></span> |
| <span class="source-line-no">2257</span><span id="line-2257"> /**</span> |
| <span class="source-line-no">2258</span><span id="line-2258"> * Mark region server(s) as decommissioned to prevent additional regions from getting assigned to</span> |
| <span class="source-line-no">2259</span><span id="line-2259"> * them. Optionally unload the regions on the servers. If there are multiple servers to be</span> |
| <span class="source-line-no">2260</span><span id="line-2260"> * decommissioned, decommissioning them at the same time can prevent wasteful region movements.</span> |
| <span class="source-line-no">2261</span><span id="line-2261"> * Region unloading is asynchronous.</span> |
| <span class="source-line-no">2262</span><span id="line-2262"> * @param servers The list of servers to decommission.</span> |
| <span class="source-line-no">2263</span><span id="line-2263"> * @param offload True to offload the regions from the decommissioned servers</span> |
| <span class="source-line-no">2264</span><span id="line-2264"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2265</span><span id="line-2265"> */</span> |
| <span class="source-line-no">2266</span><span id="line-2266"> void decommissionRegionServers(List<ServerName> servers, boolean offload) throws IOException;</span> |
| <span class="source-line-no">2267</span><span id="line-2267"></span> |
| <span class="source-line-no">2268</span><span id="line-2268"> /**</span> |
| <span class="source-line-no">2269</span><span id="line-2269"> * List region servers marked as decommissioned, which can not be assigned regions.</span> |
| <span class="source-line-no">2270</span><span id="line-2270"> * @return List of decommissioned region servers.</span> |
| <span class="source-line-no">2271</span><span id="line-2271"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2272</span><span id="line-2272"> */</span> |
| <span class="source-line-no">2273</span><span id="line-2273"> List<ServerName> listDecommissionedRegionServers() throws IOException;</span> |
| <span class="source-line-no">2274</span><span id="line-2274"></span> |
| <span class="source-line-no">2275</span><span id="line-2275"> /**</span> |
| <span class="source-line-no">2276</span><span id="line-2276"> * Remove decommission marker from a region server to allow regions assignments. Load regions onto</span> |
| <span class="source-line-no">2277</span><span id="line-2277"> * the server if a list of regions is given. Region loading is asynchronous.</span> |
| <span class="source-line-no">2278</span><span id="line-2278"> * @param server The server to recommission.</span> |
| <span class="source-line-no">2279</span><span id="line-2279"> * @param encodedRegionNames Regions to load onto the server.</span> |
| <span class="source-line-no">2280</span><span id="line-2280"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2281</span><span id="line-2281"> */</span> |
| <span class="source-line-no">2282</span><span id="line-2282"> void recommissionRegionServer(ServerName server, List<byte[]> encodedRegionNames)</span> |
| <span class="source-line-no">2283</span><span id="line-2283"> throws IOException;</span> |
| <span class="source-line-no">2284</span><span id="line-2284"></span> |
| <span class="source-line-no">2285</span><span id="line-2285"> /**</span> |
| <span class="source-line-no">2286</span><span id="line-2286"> * Find all table and column families that are replicated from this cluster</span> |
| <span class="source-line-no">2287</span><span id="line-2287"> * @return the replicated table-cfs list of this cluster.</span> |
| <span class="source-line-no">2288</span><span id="line-2288"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2289</span><span id="line-2289"> */</span> |
| <span class="source-line-no">2290</span><span id="line-2290"> List<TableCFs> listReplicatedTableCFs() throws IOException;</span> |
| <span class="source-line-no">2291</span><span id="line-2291"></span> |
| <span class="source-line-no">2292</span><span id="line-2292"> /**</span> |
| <span class="source-line-no">2293</span><span id="line-2293"> * Enable a table's replication switch.</span> |
| <span class="source-line-no">2294</span><span id="line-2294"> * @param tableName name of the table</span> |
| <span class="source-line-no">2295</span><span id="line-2295"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2296</span><span id="line-2296"> */</span> |
| <span class="source-line-no">2297</span><span id="line-2297"> void enableTableReplication(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">2298</span><span id="line-2298"></span> |
| <span class="source-line-no">2299</span><span id="line-2299"> /**</span> |
| <span class="source-line-no">2300</span><span id="line-2300"> * Disable a table's replication switch.</span> |
| <span class="source-line-no">2301</span><span id="line-2301"> * @param tableName name of the table</span> |
| <span class="source-line-no">2302</span><span id="line-2302"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2303</span><span id="line-2303"> */</span> |
| <span class="source-line-no">2304</span><span id="line-2304"> void disableTableReplication(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">2305</span><span id="line-2305"></span> |
| <span class="source-line-no">2306</span><span id="line-2306"> /**</span> |
| <span class="source-line-no">2307</span><span id="line-2307"> * Clear compacting queues on a regionserver.</span> |
| <span class="source-line-no">2308</span><span id="line-2308"> * @param serverName the region server name</span> |
| <span class="source-line-no">2309</span><span id="line-2309"> * @param queues the set of queue name</span> |
| <span class="source-line-no">2310</span><span id="line-2310"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2311</span><span id="line-2311"> */</span> |
| <span class="source-line-no">2312</span><span id="line-2312"> void clearCompactionQueues(ServerName serverName, Set<String> queues)</span> |
| <span class="source-line-no">2313</span><span id="line-2313"> throws IOException, InterruptedException;</span> |
| <span class="source-line-no">2314</span><span id="line-2314"></span> |
| <span class="source-line-no">2315</span><span id="line-2315"> /**</span> |
| <span class="source-line-no">2316</span><span id="line-2316"> * List dead region servers.</span> |
| <span class="source-line-no">2317</span><span id="line-2317"> * @return List of dead region servers.</span> |
| <span class="source-line-no">2318</span><span id="line-2318"> */</span> |
| <span class="source-line-no">2319</span><span id="line-2319"> default List<ServerName> listDeadServers() throws IOException {</span> |
| <span class="source-line-no">2320</span><span id="line-2320"> return getClusterMetrics(EnumSet.of(Option.DEAD_SERVERS)).getDeadServerNames();</span> |
| <span class="source-line-no">2321</span><span id="line-2321"> }</span> |
| <span class="source-line-no">2322</span><span id="line-2322"></span> |
| <span class="source-line-no">2323</span><span id="line-2323"> /**</span> |
| <span class="source-line-no">2324</span><span id="line-2324"> * List unknown region servers.</span> |
| <span class="source-line-no">2325</span><span id="line-2325"> * @return List of unknown region servers.</span> |
| <span class="source-line-no">2326</span><span id="line-2326"> */</span> |
| <span class="source-line-no">2327</span><span id="line-2327"> default List<ServerName> listUnknownServers() throws IOException {</span> |
| <span class="source-line-no">2328</span><span id="line-2328"> return getClusterMetrics(EnumSet.of(Option.UNKNOWN_SERVERS)).getUnknownServerNames();</span> |
| <span class="source-line-no">2329</span><span id="line-2329"> }</span> |
| <span class="source-line-no">2330</span><span id="line-2330"></span> |
| <span class="source-line-no">2331</span><span id="line-2331"> /**</span> |
| <span class="source-line-no">2332</span><span id="line-2332"> * Clear dead region servers from master.</span> |
| <span class="source-line-no">2333</span><span id="line-2333"> * @param servers list of dead region servers.</span> |
| <span class="source-line-no">2334</span><span id="line-2334"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2335</span><span id="line-2335"> * @return List of servers that are not cleared</span> |
| <span class="source-line-no">2336</span><span id="line-2336"> */</span> |
| <span class="source-line-no">2337</span><span id="line-2337"> List<ServerName> clearDeadServers(List<ServerName> servers) throws IOException;</span> |
| <span class="source-line-no">2338</span><span id="line-2338"></span> |
| <span class="source-line-no">2339</span><span id="line-2339"> /**</span> |
| <span class="source-line-no">2340</span><span id="line-2340"> * Create a new table by cloning the existent table schema.</span> |
| <span class="source-line-no">2341</span><span id="line-2341"> * @param tableName name of the table to be cloned</span> |
| <span class="source-line-no">2342</span><span id="line-2342"> * @param newTableName name of the new table where the table will be created</span> |
| <span class="source-line-no">2343</span><span id="line-2343"> * @param preserveSplits True if the splits should be preserved</span> |
| <span class="source-line-no">2344</span><span id="line-2344"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2345</span><span id="line-2345"> */</span> |
| <span class="source-line-no">2346</span><span id="line-2346"> void cloneTableSchema(TableName tableName, TableName newTableName, boolean preserveSplits)</span> |
| <span class="source-line-no">2347</span><span id="line-2347"> throws IOException;</span> |
| <span class="source-line-no">2348</span><span id="line-2348"></span> |
| <span class="source-line-no">2349</span><span id="line-2349"> /**</span> |
| <span class="source-line-no">2350</span><span id="line-2350"> * Switch the rpc throttle enable state.</span> |
| <span class="source-line-no">2351</span><span id="line-2351"> * @param enable Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">2352</span><span id="line-2352"> * @return Previous rpc throttle enabled value</span> |
| <span class="source-line-no">2353</span><span id="line-2353"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2354</span><span id="line-2354"> */</span> |
| <span class="source-line-no">2355</span><span id="line-2355"> boolean switchRpcThrottle(boolean enable) throws IOException;</span> |
| <span class="source-line-no">2356</span><span id="line-2356"></span> |
| <span class="source-line-no">2357</span><span id="line-2357"> /**</span> |
| <span class="source-line-no">2358</span><span id="line-2358"> * Get if the rpc throttle is enabled.</span> |
| <span class="source-line-no">2359</span><span id="line-2359"> * @return True if rpc throttle is enabled</span> |
| <span class="source-line-no">2360</span><span id="line-2360"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2361</span><span id="line-2361"> */</span> |
| <span class="source-line-no">2362</span><span id="line-2362"> boolean isRpcThrottleEnabled() throws IOException;</span> |
| <span class="source-line-no">2363</span><span id="line-2363"></span> |
| <span class="source-line-no">2364</span><span id="line-2364"> /**</span> |
| <span class="source-line-no">2365</span><span id="line-2365"> * Switch the exceed throttle quota. If enabled, user/table/namespace throttle quota can be</span> |
| <span class="source-line-no">2366</span><span id="line-2366"> * exceeded if region server has availble quota.</span> |
| <span class="source-line-no">2367</span><span id="line-2367"> * @param enable Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">2368</span><span id="line-2368"> * @return Previous exceed throttle enabled value</span> |
| <span class="source-line-no">2369</span><span id="line-2369"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2370</span><span id="line-2370"> */</span> |
| <span class="source-line-no">2371</span><span id="line-2371"> boolean exceedThrottleQuotaSwitch(final boolean enable) throws IOException;</span> |
| <span class="source-line-no">2372</span><span id="line-2372"></span> |
| <span class="source-line-no">2373</span><span id="line-2373"> /**</span> |
| <span class="source-line-no">2374</span><span id="line-2374"> * Fetches the table sizes on the filesystem as tracked by the HBase Master.</span> |
| <span class="source-line-no">2375</span><span id="line-2375"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2376</span><span id="line-2376"> */</span> |
| <span class="source-line-no">2377</span><span id="line-2377"> Map<TableName, Long> getSpaceQuotaTableSizes() throws IOException;</span> |
| <span class="source-line-no">2378</span><span id="line-2378"></span> |
| <span class="source-line-no">2379</span><span id="line-2379"> /**</span> |
| <span class="source-line-no">2380</span><span id="line-2380"> * Fetches the observed {@link SpaceQuotaSnapshotView}s observed by a RegionServer.</span> |
| <span class="source-line-no">2381</span><span id="line-2381"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2382</span><span id="line-2382"> */</span> |
| <span class="source-line-no">2383</span><span id="line-2383"> Map<TableName, ? extends SpaceQuotaSnapshotView></span> |
| <span class="source-line-no">2384</span><span id="line-2384"> getRegionServerSpaceQuotaSnapshots(ServerName serverName) throws IOException;</span> |
| <span class="source-line-no">2385</span><span id="line-2385"></span> |
| <span class="source-line-no">2386</span><span id="line-2386"> /**</span> |
| <span class="source-line-no">2387</span><span id="line-2387"> * Returns the Master's view of a quota on the given {@code namespace} or null if the Master has</span> |
| <span class="source-line-no">2388</span><span id="line-2388"> * no quota information on that namespace.</span> |
| <span class="source-line-no">2389</span><span id="line-2389"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2390</span><span id="line-2390"> */</span> |
| <span class="source-line-no">2391</span><span id="line-2391"> SpaceQuotaSnapshotView getCurrentSpaceQuotaSnapshot(String namespace) throws IOException;</span> |
| <span class="source-line-no">2392</span><span id="line-2392"></span> |
| <span class="source-line-no">2393</span><span id="line-2393"> /**</span> |
| <span class="source-line-no">2394</span><span id="line-2394"> * Returns the Master's view of a quota on the given {@code tableName} or null if the Master has</span> |
| <span class="source-line-no">2395</span><span id="line-2395"> * no quota information on that table.</span> |
| <span class="source-line-no">2396</span><span id="line-2396"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2397</span><span id="line-2397"> */</span> |
| <span class="source-line-no">2398</span><span id="line-2398"> SpaceQuotaSnapshotView getCurrentSpaceQuotaSnapshot(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">2399</span><span id="line-2399"></span> |
| <span class="source-line-no">2400</span><span id="line-2400"> /**</span> |
| <span class="source-line-no">2401</span><span id="line-2401"> * Grants user specific permissions</span> |
| <span class="source-line-no">2402</span><span id="line-2402"> * @param userPermission user name and the specific permission</span> |
| <span class="source-line-no">2403</span><span id="line-2403"> * @param mergeExistingPermissions If set to false, later granted permissions will override</span> |
| <span class="source-line-no">2404</span><span id="line-2404"> * previous granted permissions. otherwise, it'll merge with</span> |
| <span class="source-line-no">2405</span><span id="line-2405"> * previous granted permissions.</span> |
| <span class="source-line-no">2406</span><span id="line-2406"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2407</span><span id="line-2407"> */</span> |
| <span class="source-line-no">2408</span><span id="line-2408"> void grant(UserPermission userPermission, boolean mergeExistingPermissions) throws IOException;</span> |
| <span class="source-line-no">2409</span><span id="line-2409"></span> |
| <span class="source-line-no">2410</span><span id="line-2410"> /**</span> |
| <span class="source-line-no">2411</span><span id="line-2411"> * Revokes user specific permissions</span> |
| <span class="source-line-no">2412</span><span id="line-2412"> * @param userPermission user name and the specific permission</span> |
| <span class="source-line-no">2413</span><span id="line-2413"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2414</span><span id="line-2414"> */</span> |
| <span class="source-line-no">2415</span><span id="line-2415"> void revoke(UserPermission userPermission) throws IOException;</span> |
| <span class="source-line-no">2416</span><span id="line-2416"></span> |
| <span class="source-line-no">2417</span><span id="line-2417"> /**</span> |
| <span class="source-line-no">2418</span><span id="line-2418"> * Get the global/namespace/table permissions for user</span> |
| <span class="source-line-no">2419</span><span id="line-2419"> * @param getUserPermissionsRequest A request contains which user, global, namespace or table</span> |
| <span class="source-line-no">2420</span><span id="line-2420"> * permissions needed</span> |
| <span class="source-line-no">2421</span><span id="line-2421"> * @return The user and permission list</span> |
| <span class="source-line-no">2422</span><span id="line-2422"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2423</span><span id="line-2423"> */</span> |
| <span class="source-line-no">2424</span><span id="line-2424"> List<UserPermission> getUserPermissions(GetUserPermissionsRequest getUserPermissionsRequest)</span> |
| <span class="source-line-no">2425</span><span id="line-2425"> throws IOException;</span> |
| <span class="source-line-no">2426</span><span id="line-2426"></span> |
| <span class="source-line-no">2427</span><span id="line-2427"> /**</span> |
| <span class="source-line-no">2428</span><span id="line-2428"> * Check if the user has specific permissions</span> |
| <span class="source-line-no">2429</span><span id="line-2429"> * @param userName the user name</span> |
| <span class="source-line-no">2430</span><span id="line-2430"> * @param permissions the specific permission list</span> |
| <span class="source-line-no">2431</span><span id="line-2431"> * @return True if user has the specific permissions</span> |
| <span class="source-line-no">2432</span><span id="line-2432"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2433</span><span id="line-2433"> */</span> |
| <span class="source-line-no">2434</span><span id="line-2434"> List<Boolean> hasUserPermissions(String userName, List<Permission> permissions)</span> |
| <span class="source-line-no">2435</span><span id="line-2435"> throws IOException;</span> |
| <span class="source-line-no">2436</span><span id="line-2436"></span> |
| <span class="source-line-no">2437</span><span id="line-2437"> /**</span> |
| <span class="source-line-no">2438</span><span id="line-2438"> * Check if call user has specific permissions</span> |
| <span class="source-line-no">2439</span><span id="line-2439"> * @param permissions the specific permission list</span> |
| <span class="source-line-no">2440</span><span id="line-2440"> * @return True if user has the specific permissions</span> |
| <span class="source-line-no">2441</span><span id="line-2441"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2442</span><span id="line-2442"> */</span> |
| <span class="source-line-no">2443</span><span id="line-2443"> default List<Boolean> hasUserPermissions(List<Permission> permissions) throws IOException {</span> |
| <span class="source-line-no">2444</span><span id="line-2444"> return hasUserPermissions(null, permissions);</span> |
| <span class="source-line-no">2445</span><span id="line-2445"> }</span> |
| <span class="source-line-no">2446</span><span id="line-2446"></span> |
| <span class="source-line-no">2447</span><span id="line-2447"> /**</span> |
| <span class="source-line-no">2448</span><span id="line-2448"> * Turn on or off the auto snapshot cleanup based on TTL.</span> |
| <span class="source-line-no">2449</span><span id="line-2449"> * @param on Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">2450</span><span id="line-2450"> * @param synchronous If <code>true</code>, it waits until current snapshot cleanup is completed,</span> |
| <span class="source-line-no">2451</span><span id="line-2451"> * if outstanding.</span> |
| <span class="source-line-no">2452</span><span id="line-2452"> * @return Previous auto snapshot cleanup value</span> |
| <span class="source-line-no">2453</span><span id="line-2453"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2454</span><span id="line-2454"> */</span> |
| <span class="source-line-no">2455</span><span id="line-2455"> boolean snapshotCleanupSwitch(final boolean on, final boolean synchronous) throws IOException;</span> |
| <span class="source-line-no">2456</span><span id="line-2456"></span> |
| <span class="source-line-no">2457</span><span id="line-2457"> /**</span> |
| <span class="source-line-no">2458</span><span id="line-2458"> * Query the current state of the auto snapshot cleanup based on TTL.</span> |
| <span class="source-line-no">2459</span><span id="line-2459"> * @return <code>true</code> if the auto snapshot cleanup is enabled, <code>false</code></span> |
| <span class="source-line-no">2460</span><span id="line-2460"> * otherwise.</span> |
| <span class="source-line-no">2461</span><span id="line-2461"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2462</span><span id="line-2462"> */</span> |
| <span class="source-line-no">2463</span><span id="line-2463"> boolean isSnapshotCleanupEnabled() throws IOException;</span> |
| <span class="source-line-no">2464</span><span id="line-2464"></span> |
| <span class="source-line-no">2465</span><span id="line-2465"> /**</span> |
| <span class="source-line-no">2466</span><span id="line-2466"> * Retrieves online slow/large RPC logs from the provided list of RegionServers</span> |
| <span class="source-line-no">2467</span><span id="line-2467"> * @param serverNames Server names to get slowlog responses from</span> |
| <span class="source-line-no">2468</span><span id="line-2468"> * @param logQueryFilter filter to be used if provided (determines slow / large RPC logs)</span> |
| <span class="source-line-no">2469</span><span id="line-2469"> * @return online slowlog response list</span> |
| <span class="source-line-no">2470</span><span id="line-2470"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2471</span><span id="line-2471"> * @deprecated since 2.4.0 and will be removed in 4.0.0. Use</span> |
| <span class="source-line-no">2472</span><span id="line-2472"> * {@link #getLogEntries(Set, String, ServerType, int, Map)} instead.</span> |
| <span class="source-line-no">2473</span><span id="line-2473"> */</span> |
| <span class="source-line-no">2474</span><span id="line-2474"> @Deprecated</span> |
| <span class="source-line-no">2475</span><span id="line-2475"> default List<OnlineLogRecord> getSlowLogResponses(final Set<ServerName> serverNames,</span> |
| <span class="source-line-no">2476</span><span id="line-2476"> final LogQueryFilter logQueryFilter) throws IOException {</span> |
| <span class="source-line-no">2477</span><span id="line-2477"> String logType;</span> |
| <span class="source-line-no">2478</span><span id="line-2478"> if (LogQueryFilter.Type.LARGE_LOG.equals(logQueryFilter.getType())) {</span> |
| <span class="source-line-no">2479</span><span id="line-2479"> logType = "LARGE_LOG";</span> |
| <span class="source-line-no">2480</span><span id="line-2480"> } else {</span> |
| <span class="source-line-no">2481</span><span id="line-2481"> logType = "SLOW_LOG";</span> |
| <span class="source-line-no">2482</span><span id="line-2482"> }</span> |
| <span class="source-line-no">2483</span><span id="line-2483"> Map<String, Object> filterParams = new HashMap<>();</span> |
| <span class="source-line-no">2484</span><span id="line-2484"> filterParams.put("regionName", logQueryFilter.getRegionName());</span> |
| <span class="source-line-no">2485</span><span id="line-2485"> filterParams.put("clientAddress", logQueryFilter.getClientAddress());</span> |
| <span class="source-line-no">2486</span><span id="line-2486"> filterParams.put("tableName", logQueryFilter.getTableName());</span> |
| <span class="source-line-no">2487</span><span id="line-2487"> filterParams.put("userName", logQueryFilter.getUserName());</span> |
| <span class="source-line-no">2488</span><span id="line-2488"> filterParams.put("filterByOperator", logQueryFilter.getFilterByOperator().toString());</span> |
| <span class="source-line-no">2489</span><span id="line-2489"> List<LogEntry> logEntries = getLogEntries(serverNames, logType, ServerType.REGION_SERVER,</span> |
| <span class="source-line-no">2490</span><span id="line-2490"> logQueryFilter.getLimit(), filterParams);</span> |
| <span class="source-line-no">2491</span><span id="line-2491"> return logEntries.stream().map(logEntry -> (OnlineLogRecord) logEntry)</span> |
| <span class="source-line-no">2492</span><span id="line-2492"> .collect(Collectors.toList());</span> |
| <span class="source-line-no">2493</span><span id="line-2493"> }</span> |
| <span class="source-line-no">2494</span><span id="line-2494"></span> |
| <span class="source-line-no">2495</span><span id="line-2495"> /**</span> |
| <span class="source-line-no">2496</span><span id="line-2496"> * Clears online slow/large RPC logs from the provided list of RegionServers</span> |
| <span class="source-line-no">2497</span><span id="line-2497"> * @param serverNames Set of Server names to clean slowlog responses from</span> |
| <span class="source-line-no">2498</span><span id="line-2498"> * @return List of booleans representing if online slowlog response buffer is cleaned from each</span> |
| <span class="source-line-no">2499</span><span id="line-2499"> * RegionServer</span> |
| <span class="source-line-no">2500</span><span id="line-2500"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2501</span><span id="line-2501"> */</span> |
| <span class="source-line-no">2502</span><span id="line-2502"> List<Boolean> clearSlowLogResponses(final Set<ServerName> serverNames) throws IOException;</span> |
| <span class="source-line-no">2503</span><span id="line-2503"></span> |
| <span class="source-line-no">2504</span><span id="line-2504"> /**</span> |
| <span class="source-line-no">2505</span><span id="line-2505"> * Creates a new RegionServer group with the given name</span> |
| <span class="source-line-no">2506</span><span id="line-2506"> * @param groupName the name of the group</span> |
| <span class="source-line-no">2507</span><span id="line-2507"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2508</span><span id="line-2508"> */</span> |
| <span class="source-line-no">2509</span><span id="line-2509"> void addRSGroup(String groupName) throws IOException;</span> |
| <span class="source-line-no">2510</span><span id="line-2510"></span> |
| <span class="source-line-no">2511</span><span id="line-2511"> /**</span> |
| <span class="source-line-no">2512</span><span id="line-2512"> * Get group info for the given group name</span> |
| <span class="source-line-no">2513</span><span id="line-2513"> * @param groupName the group name</span> |
| <span class="source-line-no">2514</span><span id="line-2514"> * @return group info</span> |
| <span class="source-line-no">2515</span><span id="line-2515"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2516</span><span id="line-2516"> */</span> |
| <span class="source-line-no">2517</span><span id="line-2517"> RSGroupInfo getRSGroup(String groupName) throws IOException;</span> |
| <span class="source-line-no">2518</span><span id="line-2518"></span> |
| <span class="source-line-no">2519</span><span id="line-2519"> /**</span> |
| <span class="source-line-no">2520</span><span id="line-2520"> * Get group info for the given hostPort</span> |
| <span class="source-line-no">2521</span><span id="line-2521"> * @param hostPort HostPort to get RSGroupInfo for</span> |
| <span class="source-line-no">2522</span><span id="line-2522"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2523</span><span id="line-2523"> */</span> |
| <span class="source-line-no">2524</span><span id="line-2524"> RSGroupInfo getRSGroup(Address hostPort) throws IOException;</span> |
| <span class="source-line-no">2525</span><span id="line-2525"></span> |
| <span class="source-line-no">2526</span><span id="line-2526"> /**</span> |
| <span class="source-line-no">2527</span><span id="line-2527"> * Get group info for the given table</span> |
| <span class="source-line-no">2528</span><span id="line-2528"> * @param tableName table name to get RSGroupInfo for</span> |
| <span class="source-line-no">2529</span><span id="line-2529"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2530</span><span id="line-2530"> */</span> |
| <span class="source-line-no">2531</span><span id="line-2531"> RSGroupInfo getRSGroup(TableName tableName) throws IOException;</span> |
| <span class="source-line-no">2532</span><span id="line-2532"></span> |
| <span class="source-line-no">2533</span><span id="line-2533"> /**</span> |
| <span class="source-line-no">2534</span><span id="line-2534"> * Lists current set of RegionServer groups</span> |
| <span class="source-line-no">2535</span><span id="line-2535"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2536</span><span id="line-2536"> */</span> |
| <span class="source-line-no">2537</span><span id="line-2537"> List<RSGroupInfo> listRSGroups() throws IOException;</span> |
| <span class="source-line-no">2538</span><span id="line-2538"></span> |
| <span class="source-line-no">2539</span><span id="line-2539"> /**</span> |
| <span class="source-line-no">2540</span><span id="line-2540"> * Get all tables in this RegionServer group.</span> |
| <span class="source-line-no">2541</span><span id="line-2541"> * @param groupName the group name</span> |
| <span class="source-line-no">2542</span><span id="line-2542"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2543</span><span id="line-2543"> * @see #getConfiguredNamespacesAndTablesInRSGroup(String)</span> |
| <span class="source-line-no">2544</span><span id="line-2544"> */</span> |
| <span class="source-line-no">2545</span><span id="line-2545"> List<TableName> listTablesInRSGroup(String groupName) throws IOException;</span> |
| <span class="source-line-no">2546</span><span id="line-2546"></span> |
| <span class="source-line-no">2547</span><span id="line-2547"> /**</span> |
| <span class="source-line-no">2548</span><span id="line-2548"> * Get the namespaces and tables which have this RegionServer group in descriptor.</span> |
| <span class="source-line-no">2549</span><span id="line-2549"> * <p/></span> |
| <span class="source-line-no">2550</span><span id="line-2550"> * The difference between this method and {@link #listTablesInRSGroup(String)} is that, this</span> |
| <span class="source-line-no">2551</span><span id="line-2551"> * method will not include the table which is actually in this RegionServr group but without the</span> |
| <span class="source-line-no">2552</span><span id="line-2552"> * RegionServer group configuration in its {@link TableDescriptor}. For example, we have a group</span> |
| <span class="source-line-no">2553</span><span id="line-2553"> * 'A', and we make namespace 'nsA' in this group, then all the tables under this namespace will</span> |
| <span class="source-line-no">2554</span><span id="line-2554"> * in the group 'A', but this method will not return these tables but only the namespace 'nsA',</span> |
| <span class="source-line-no">2555</span><span id="line-2555"> * while the {@link #listTablesInRSGroup(String)} will return all these tables.</span> |
| <span class="source-line-no">2556</span><span id="line-2556"> * @param groupName the group name</span> |
| <span class="source-line-no">2557</span><span id="line-2557"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2558</span><span id="line-2558"> * @see #listTablesInRSGroup(String)</span> |
| <span class="source-line-no">2559</span><span id="line-2559"> */</span> |
| <span class="source-line-no">2560</span><span id="line-2560"> Pair<List<String>, List<TableName>> getConfiguredNamespacesAndTablesInRSGroup(String groupName)</span> |
| <span class="source-line-no">2561</span><span id="line-2561"> throws IOException;</span> |
| <span class="source-line-no">2562</span><span id="line-2562"></span> |
| <span class="source-line-no">2563</span><span id="line-2563"> /**</span> |
| <span class="source-line-no">2564</span><span id="line-2564"> * Remove RegionServer group associated with the given name</span> |
| <span class="source-line-no">2565</span><span id="line-2565"> * @param groupName the group name</span> |
| <span class="source-line-no">2566</span><span id="line-2566"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2567</span><span id="line-2567"> */</span> |
| <span class="source-line-no">2568</span><span id="line-2568"> void removeRSGroup(String groupName) throws IOException;</span> |
| <span class="source-line-no">2569</span><span id="line-2569"></span> |
| <span class="source-line-no">2570</span><span id="line-2570"> /**</span> |
| <span class="source-line-no">2571</span><span id="line-2571"> * Remove decommissioned servers from group 1. Sometimes we may find the server aborted due to</span> |
| <span class="source-line-no">2572</span><span id="line-2572"> * some hardware failure and we must offline the server for repairing. Or we need to move some</span> |
| <span class="source-line-no">2573</span><span id="line-2573"> * servers to join other clusters. So we need to remove these servers from the group. 2.</span> |
| <span class="source-line-no">2574</span><span id="line-2574"> * Dead/recovering/live servers will be disallowed.</span> |
| <span class="source-line-no">2575</span><span id="line-2575"> * @param servers set of servers to remove</span> |
| <span class="source-line-no">2576</span><span id="line-2576"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2577</span><span id="line-2577"> */</span> |
| <span class="source-line-no">2578</span><span id="line-2578"> void removeServersFromRSGroup(Set<Address> servers) throws IOException;</span> |
| <span class="source-line-no">2579</span><span id="line-2579"></span> |
| <span class="source-line-no">2580</span><span id="line-2580"> /**</span> |
| <span class="source-line-no">2581</span><span id="line-2581"> * Move given set of servers to the specified target RegionServer group</span> |
| <span class="source-line-no">2582</span><span id="line-2582"> * @param servers set of servers to move</span> |
| <span class="source-line-no">2583</span><span id="line-2583"> * @param targetGroup the group to move servers to</span> |
| <span class="source-line-no">2584</span><span id="line-2584"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2585</span><span id="line-2585"> */</span> |
| <span class="source-line-no">2586</span><span id="line-2586"> void moveServersToRSGroup(Set<Address> servers, String targetGroup) throws IOException;</span> |
| <span class="source-line-no">2587</span><span id="line-2587"></span> |
| <span class="source-line-no">2588</span><span id="line-2588"> /**</span> |
| <span class="source-line-no">2589</span><span id="line-2589"> * Set the RegionServer group for tables</span> |
| <span class="source-line-no">2590</span><span id="line-2590"> * @param tables tables to set group for</span> |
| <span class="source-line-no">2591</span><span id="line-2591"> * @param groupName group name for tables</span> |
| <span class="source-line-no">2592</span><span id="line-2592"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2593</span><span id="line-2593"> */</span> |
| <span class="source-line-no">2594</span><span id="line-2594"> void setRSGroup(Set<TableName> tables, String groupName) throws IOException;</span> |
| <span class="source-line-no">2595</span><span id="line-2595"></span> |
| <span class="source-line-no">2596</span><span id="line-2596"> /**</span> |
| <span class="source-line-no">2597</span><span id="line-2597"> * Balance regions in the given RegionServer group</span> |
| <span class="source-line-no">2598</span><span id="line-2598"> * @param groupName the group name</span> |
| <span class="source-line-no">2599</span><span id="line-2599"> * @return BalanceResponse details about the balancer run</span> |
| <span class="source-line-no">2600</span><span id="line-2600"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2601</span><span id="line-2601"> */</span> |
| <span class="source-line-no">2602</span><span id="line-2602"> default BalanceResponse balanceRSGroup(String groupName) throws IOException {</span> |
| <span class="source-line-no">2603</span><span id="line-2603"> return balanceRSGroup(groupName, BalanceRequest.defaultInstance());</span> |
| <span class="source-line-no">2604</span><span id="line-2604"> }</span> |
| <span class="source-line-no">2605</span><span id="line-2605"></span> |
| <span class="source-line-no">2606</span><span id="line-2606"> /**</span> |
| <span class="source-line-no">2607</span><span id="line-2607"> * Balance regions in the given RegionServer group, running based on the given</span> |
| <span class="source-line-no">2608</span><span id="line-2608"> * {@link BalanceRequest}.</span> |
| <span class="source-line-no">2609</span><span id="line-2609"> * @return BalanceResponse details about the balancer run</span> |
| <span class="source-line-no">2610</span><span id="line-2610"> */</span> |
| <span class="source-line-no">2611</span><span id="line-2611"> BalanceResponse balanceRSGroup(String groupName, BalanceRequest request) throws IOException;</span> |
| <span class="source-line-no">2612</span><span id="line-2612"></span> |
| <span class="source-line-no">2613</span><span id="line-2613"> /**</span> |
| <span class="source-line-no">2614</span><span id="line-2614"> * Rename rsgroup</span> |
| <span class="source-line-no">2615</span><span id="line-2615"> * @param oldName old rsgroup name</span> |
| <span class="source-line-no">2616</span><span id="line-2616"> * @param newName new rsgroup name</span> |
| <span class="source-line-no">2617</span><span id="line-2617"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2618</span><span id="line-2618"> */</span> |
| <span class="source-line-no">2619</span><span id="line-2619"> void renameRSGroup(String oldName, String newName) throws IOException;</span> |
| <span class="source-line-no">2620</span><span id="line-2620"></span> |
| <span class="source-line-no">2621</span><span id="line-2621"> /**</span> |
| <span class="source-line-no">2622</span><span id="line-2622"> * Update RSGroup configuration</span> |
| <span class="source-line-no">2623</span><span id="line-2623"> * @param groupName the group name</span> |
| <span class="source-line-no">2624</span><span id="line-2624"> * @param configuration new configuration of the group name to be set</span> |
| <span class="source-line-no">2625</span><span id="line-2625"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2626</span><span id="line-2626"> */</span> |
| <span class="source-line-no">2627</span><span id="line-2627"> void updateRSGroupConfig(String groupName, Map<String, String> configuration) throws IOException;</span> |
| <span class="source-line-no">2628</span><span id="line-2628"></span> |
| <span class="source-line-no">2629</span><span id="line-2629"> /**</span> |
| <span class="source-line-no">2630</span><span id="line-2630"> * Retrieve recent online records from HMaster / RegionServers. Examples include slow/large RPC</span> |
| <span class="source-line-no">2631</span><span id="line-2631"> * logs, balancer decisions by master.</span> |
| <span class="source-line-no">2632</span><span id="line-2632"> * @param serverNames servers to retrieve records from, useful in case of records maintained by</span> |
| <span class="source-line-no">2633</span><span id="line-2633"> * RegionServer as we can select specific server. In case of</span> |
| <span class="source-line-no">2634</span><span id="line-2634"> * servertype=MASTER, logs will only come from the currently active master.</span> |
| <span class="source-line-no">2635</span><span id="line-2635"> * @param logType string representing type of log records</span> |
| <span class="source-line-no">2636</span><span id="line-2636"> * @param serverType enum for server type: HMaster or RegionServer</span> |
| <span class="source-line-no">2637</span><span id="line-2637"> * @param limit put a limit to list of records that server should send in response</span> |
| <span class="source-line-no">2638</span><span id="line-2638"> * @param filterParams additional filter params</span> |
| <span class="source-line-no">2639</span><span id="line-2639"> * @return Log entries representing online records from servers</span> |
| <span class="source-line-no">2640</span><span id="line-2640"> * @throws IOException if a remote or network exception occurs</span> |
| <span class="source-line-no">2641</span><span id="line-2641"> */</span> |
| <span class="source-line-no">2642</span><span id="line-2642"> List<LogEntry> getLogEntries(Set<ServerName> serverNames, String logType, ServerType serverType,</span> |
| <span class="source-line-no">2643</span><span id="line-2643"> int limit, Map<String, Object> filterParams) throws IOException;</span> |
| <span class="source-line-no">2644</span><span id="line-2644"></span> |
| <span class="source-line-no">2645</span><span id="line-2645"> /**</span> |
| <span class="source-line-no">2646</span><span id="line-2646"> * Flush master local region</span> |
| <span class="source-line-no">2647</span><span id="line-2647"> */</span> |
| <span class="source-line-no">2648</span><span id="line-2648"> void flushMasterStore() throws IOException;</span> |
| <span class="source-line-no">2649</span><span id="line-2649"></span> |
| <span class="source-line-no">2650</span><span id="line-2650"> /**</span> |
| <span class="source-line-no">2651</span><span id="line-2651"> * Get the list of cached files</span> |
| <span class="source-line-no">2652</span><span id="line-2652"> */</span> |
| <span class="source-line-no">2653</span><span id="line-2653"> List<String> getCachedFilesList(ServerName serverName) throws IOException;</span> |
| <span class="source-line-no">2654</span><span id="line-2654">}</span> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </pre> |
| </div> |
| </main> |
| </body> |
| </html> |