| <!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: AsyncAdmin"> |
| <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.addListener;</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.IOException;</span> |
| <span class="source-line-no">023</span><span id="line-23">import java.util.Arrays;</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.Optional;</span> |
| <span class="source-line-no">030</span><span id="line-30">import java.util.Set;</span> |
| <span class="source-line-no">031</span><span id="line-31">import java.util.concurrent.CompletableFuture;</span> |
| <span class="source-line-no">032</span><span id="line-32">import java.util.function.Function;</span> |
| <span class="source-line-no">033</span><span id="line-33">import java.util.regex.Pattern;</span> |
| <span class="source-line-no">034</span><span id="line-34">import java.util.stream.Collectors;</span> |
| <span class="source-line-no">035</span><span id="line-35">import org.apache.hadoop.hbase.CacheEvictionStats;</span> |
| <span class="source-line-no">036</span><span id="line-36">import org.apache.hadoop.hbase.ClusterMetrics;</span> |
| <span class="source-line-no">037</span><span id="line-37">import org.apache.hadoop.hbase.ClusterMetrics.Option;</span> |
| <span class="source-line-no">038</span><span id="line-38">import org.apache.hadoop.hbase.NamespaceDescriptor;</span> |
| <span class="source-line-no">039</span><span id="line-39">import org.apache.hadoop.hbase.RegionMetrics;</span> |
| <span class="source-line-no">040</span><span id="line-40">import org.apache.hadoop.hbase.ServerName;</span> |
| <span class="source-line-no">041</span><span id="line-41">import org.apache.hadoop.hbase.TableName;</span> |
| <span class="source-line-no">042</span><span id="line-42">import org.apache.hadoop.hbase.client.replication.TableCFs;</span> |
| <span class="source-line-no">043</span><span id="line-43">import org.apache.hadoop.hbase.client.security.SecurityCapability;</span> |
| <span class="source-line-no">044</span><span id="line-44">import org.apache.hadoop.hbase.net.Address;</span> |
| <span class="source-line-no">045</span><span id="line-45">import org.apache.hadoop.hbase.quotas.QuotaFilter;</span> |
| <span class="source-line-no">046</span><span id="line-46">import org.apache.hadoop.hbase.quotas.QuotaSettings;</span> |
| <span class="source-line-no">047</span><span id="line-47">import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotView;</span> |
| <span class="source-line-no">048</span><span id="line-48">import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;</span> |
| <span class="source-line-no">049</span><span id="line-49">import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;</span> |
| <span class="source-line-no">050</span><span id="line-50">import org.apache.hadoop.hbase.replication.SyncReplicationState;</span> |
| <span class="source-line-no">051</span><span id="line-51">import org.apache.hadoop.hbase.rsgroup.RSGroupInfo;</span> |
| <span class="source-line-no">052</span><span id="line-52">import org.apache.hadoop.hbase.security.access.GetUserPermissionsRequest;</span> |
| <span class="source-line-no">053</span><span id="line-53">import org.apache.hadoop.hbase.security.access.Permission;</span> |
| <span class="source-line-no">054</span><span id="line-54">import org.apache.hadoop.hbase.security.access.UserPermission;</span> |
| <span class="source-line-no">055</span><span id="line-55">import org.apache.hadoop.hbase.util.Pair;</span> |
| <span class="source-line-no">056</span><span id="line-56">import org.apache.yetus.audience.InterfaceAudience;</span> |
| <span class="source-line-no">057</span><span id="line-57"></span> |
| <span class="source-line-no">058</span><span id="line-58">import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableList;</span> |
| <span class="source-line-no">059</span><span id="line-59">import org.apache.hbase.thirdparty.com.google.protobuf.RpcChannel;</span> |
| <span class="source-line-no">060</span><span id="line-60"></span> |
| <span class="source-line-no">061</span><span id="line-61">/**</span> |
| <span class="source-line-no">062</span><span id="line-62"> * The asynchronous administrative API for HBase.</span> |
| <span class="source-line-no">063</span><span id="line-63"> * @since 2.0.0</span> |
| <span class="source-line-no">064</span><span id="line-64"> */</span> |
| <span class="source-line-no">065</span><span id="line-65">@InterfaceAudience.Public</span> |
| <span class="source-line-no">066</span><span id="line-66">public interface AsyncAdmin {</span> |
| <span class="source-line-no">067</span><span id="line-67"></span> |
| <span class="source-line-no">068</span><span id="line-68"> /**</span> |
| <span class="source-line-no">069</span><span id="line-69"> * Check if a table exists.</span> |
| <span class="source-line-no">070</span><span id="line-70"> * @param tableName Table to check.</span> |
| <span class="source-line-no">071</span><span id="line-71"> * @return True if table exists already. The return value will be wrapped by a</span> |
| <span class="source-line-no">072</span><span id="line-72"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">073</span><span id="line-73"> */</span> |
| <span class="source-line-no">074</span><span id="line-74"> CompletableFuture<Boolean> tableExists(TableName tableName);</span> |
| <span class="source-line-no">075</span><span id="line-75"></span> |
| <span class="source-line-no">076</span><span id="line-76"> /**</span> |
| <span class="source-line-no">077</span><span id="line-77"> * List all the userspace tables.</span> |
| <span class="source-line-no">078</span><span id="line-78"> * @return - returns a list of TableDescriptors wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">079</span><span id="line-79"> */</span> |
| <span class="source-line-no">080</span><span id="line-80"> default CompletableFuture<List<TableDescriptor>> listTableDescriptors() {</span> |
| <span class="source-line-no">081</span><span id="line-81"> return listTableDescriptors(false);</span> |
| <span class="source-line-no">082</span><span id="line-82"> }</span> |
| <span class="source-line-no">083</span><span id="line-83"></span> |
| <span class="source-line-no">084</span><span id="line-84"> /**</span> |
| <span class="source-line-no">085</span><span id="line-85"> * List all the tables.</span> |
| <span class="source-line-no">086</span><span id="line-86"> * @param includeSysTables False to match only against userspace tables</span> |
| <span class="source-line-no">087</span><span id="line-87"> * @return - returns a list of TableDescriptors wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">088</span><span id="line-88"> */</span> |
| <span class="source-line-no">089</span><span id="line-89"> CompletableFuture<List<TableDescriptor>> listTableDescriptors(boolean includeSysTables);</span> |
| <span class="source-line-no">090</span><span id="line-90"></span> |
| <span class="source-line-no">091</span><span id="line-91"> /**</span> |
| <span class="source-line-no">092</span><span id="line-92"> * List all the tables matching the given pattern.</span> |
| <span class="source-line-no">093</span><span id="line-93"> * @param pattern The compiled regular expression to match against</span> |
| <span class="source-line-no">094</span><span id="line-94"> * @param includeSysTables False to match only against userspace tables</span> |
| <span class="source-line-no">095</span><span id="line-95"> * @return - returns a list of TableDescriptors wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">096</span><span id="line-96"> */</span> |
| <span class="source-line-no">097</span><span id="line-97"> CompletableFuture<List<TableDescriptor>> listTableDescriptors(Pattern pattern,</span> |
| <span class="source-line-no">098</span><span id="line-98"> boolean includeSysTables);</span> |
| <span class="source-line-no">099</span><span id="line-99"></span> |
| <span class="source-line-no">100</span><span id="line-100"> /**</span> |
| <span class="source-line-no">101</span><span id="line-101"> * List specific tables including system tables.</span> |
| <span class="source-line-no">102</span><span id="line-102"> * @param tableNames the table list to match against</span> |
| <span class="source-line-no">103</span><span id="line-103"> * @return - returns a list of TableDescriptors wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">104</span><span id="line-104"> */</span> |
| <span class="source-line-no">105</span><span id="line-105"> CompletableFuture<List<TableDescriptor>> listTableDescriptors(List<TableName> tableNames);</span> |
| <span class="source-line-no">106</span><span id="line-106"></span> |
| <span class="source-line-no">107</span><span id="line-107"> /**</span> |
| <span class="source-line-no">108</span><span id="line-108"> * Get list of table descriptors by namespace.</span> |
| <span class="source-line-no">109</span><span id="line-109"> * @param name namespace name</span> |
| <span class="source-line-no">110</span><span id="line-110"> * @return returns a list of TableDescriptors wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">111</span><span id="line-111"> */</span> |
| <span class="source-line-no">112</span><span id="line-112"> CompletableFuture<List<TableDescriptor>> listTableDescriptorsByNamespace(String name);</span> |
| <span class="source-line-no">113</span><span id="line-113"></span> |
| <span class="source-line-no">114</span><span id="line-114"> /**</span> |
| <span class="source-line-no">115</span><span id="line-115"> * List all enabled or disabled table descriptors</span> |
| <span class="source-line-no">116</span><span id="line-116"> * @param isEnabled is true means return enabled table descriptors, false means return disabled</span> |
| <span class="source-line-no">117</span><span id="line-117"> * table descriptors</span> |
| <span class="source-line-no">118</span><span id="line-118"> * @return a list of table names wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">119</span><span id="line-119"> */</span> |
| <span class="source-line-no">120</span><span id="line-120"> CompletableFuture<List<TableDescriptor>> listTableDescriptorsByState(boolean isEnabled);</span> |
| <span class="source-line-no">121</span><span id="line-121"></span> |
| <span class="source-line-no">122</span><span id="line-122"> /**</span> |
| <span class="source-line-no">123</span><span id="line-123"> * List all of the names of userspace tables.</span> |
| <span class="source-line-no">124</span><span id="line-124"> * @return a list of table names wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">125</span><span id="line-125"> * @see #listTableNames(Pattern, boolean)</span> |
| <span class="source-line-no">126</span><span id="line-126"> */</span> |
| <span class="source-line-no">127</span><span id="line-127"> default CompletableFuture<List<TableName>> listTableNames() {</span> |
| <span class="source-line-no">128</span><span id="line-128"> return listTableNames(false);</span> |
| <span class="source-line-no">129</span><span id="line-129"> }</span> |
| <span class="source-line-no">130</span><span id="line-130"></span> |
| <span class="source-line-no">131</span><span id="line-131"> /**</span> |
| <span class="source-line-no">132</span><span id="line-132"> * List all of the names of tables.</span> |
| <span class="source-line-no">133</span><span id="line-133"> * @param includeSysTables False to match only against userspace tables</span> |
| <span class="source-line-no">134</span><span id="line-134"> * @return a list of table names wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">135</span><span id="line-135"> */</span> |
| <span class="source-line-no">136</span><span id="line-136"> CompletableFuture<List<TableName>> listTableNames(boolean includeSysTables);</span> |
| <span class="source-line-no">137</span><span id="line-137"></span> |
| <span class="source-line-no">138</span><span id="line-138"> /**</span> |
| <span class="source-line-no">139</span><span id="line-139"> * List all of the names of userspace tables.</span> |
| <span class="source-line-no">140</span><span id="line-140"> * @param pattern The regular expression to match against</span> |
| <span class="source-line-no">141</span><span id="line-141"> * @param includeSysTables False to match only against userspace tables</span> |
| <span class="source-line-no">142</span><span id="line-142"> * @return a list of table names wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">143</span><span id="line-143"> */</span> |
| <span class="source-line-no">144</span><span id="line-144"> CompletableFuture<List<TableName>> listTableNames(Pattern pattern, boolean includeSysTables);</span> |
| <span class="source-line-no">145</span><span id="line-145"></span> |
| <span class="source-line-no">146</span><span id="line-146"> /**</span> |
| <span class="source-line-no">147</span><span id="line-147"> * List all enabled or disabled table names</span> |
| <span class="source-line-no">148</span><span id="line-148"> * @param isEnabled is true means return enabled table names, false means return disabled table</span> |
| <span class="source-line-no">149</span><span id="line-149"> * names</span> |
| <span class="source-line-no">150</span><span id="line-150"> * @return a list of table names wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">151</span><span id="line-151"> */</span> |
| <span class="source-line-no">152</span><span id="line-152"> CompletableFuture<List<TableName>> listTableNamesByState(boolean isEnabled);</span> |
| <span class="source-line-no">153</span><span id="line-153"></span> |
| <span class="source-line-no">154</span><span id="line-154"> /**</span> |
| <span class="source-line-no">155</span><span id="line-155"> * Get list of table names by namespace.</span> |
| <span class="source-line-no">156</span><span id="line-156"> * @param name namespace name</span> |
| <span class="source-line-no">157</span><span id="line-157"> * @return The list of table names in the namespace wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">158</span><span id="line-158"> */</span> |
| <span class="source-line-no">159</span><span id="line-159"> CompletableFuture<List<TableName>> listTableNamesByNamespace(String name);</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"> * Method for getting the tableDescriptor</span> |
| <span class="source-line-no">163</span><span id="line-163"> * @param tableName as a {@link TableName}</span> |
| <span class="source-line-no">164</span><span id="line-164"> * @return the read-only tableDescriptor wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">165</span><span id="line-165"> */</span> |
| <span class="source-line-no">166</span><span id="line-166"> CompletableFuture<TableDescriptor> getDescriptor(TableName tableName);</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"> * Creates a new table.</span> |
| <span class="source-line-no">170</span><span id="line-170"> * @param desc table descriptor for table</span> |
| <span class="source-line-no">171</span><span id="line-171"> */</span> |
| <span class="source-line-no">172</span><span id="line-172"> CompletableFuture<Void> createTable(TableDescriptor desc);</span> |
| <span class="source-line-no">173</span><span id="line-173"></span> |
| <span class="source-line-no">174</span><span id="line-174"> /**</span> |
| <span class="source-line-no">175</span><span id="line-175"> * Creates a new table with the specified number of regions. The start key specified will become</span> |
| <span class="source-line-no">176</span><span id="line-176"> * 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">177</span><span id="line-177"> * 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">178</span><span id="line-178"> * has a null end key). BigInteger math will be used to divide the key range specified into enough</span> |
| <span class="source-line-no">179</span><span id="line-179"> * segments to make the required number of total regions.</span> |
| <span class="source-line-no">180</span><span id="line-180"> * @param desc table descriptor for table</span> |
| <span class="source-line-no">181</span><span id="line-181"> * @param startKey beginning of key range</span> |
| <span class="source-line-no">182</span><span id="line-182"> * @param endKey end of key range</span> |
| <span class="source-line-no">183</span><span id="line-183"> * @param numRegions the total number of regions to create</span> |
| <span class="source-line-no">184</span><span id="line-184"> */</span> |
| <span class="source-line-no">185</span><span id="line-185"> CompletableFuture<Void> createTable(TableDescriptor desc, byte[] startKey, byte[] endKey,</span> |
| <span class="source-line-no">186</span><span id="line-186"> int numRegions);</span> |
| <span class="source-line-no">187</span><span id="line-187"></span> |
| <span class="source-line-no">188</span><span id="line-188"> /**</span> |
| <span class="source-line-no">189</span><span id="line-189"> * Creates a new table with an initial set of empty regions defined by the specified split keys.</span> |
| <span class="source-line-no">190</span><span id="line-190"> * The total number of regions created will be the number of split keys plus one. Note : Avoid</span> |
| <span class="source-line-no">191</span><span id="line-191"> * passing empty split key.</span> |
| <span class="source-line-no">192</span><span id="line-192"> * @param desc table descriptor for table</span> |
| <span class="source-line-no">193</span><span id="line-193"> * @param splitKeys array of split keys for the initial regions of the table</span> |
| <span class="source-line-no">194</span><span id="line-194"> */</span> |
| <span class="source-line-no">195</span><span id="line-195"> CompletableFuture<Void> createTable(TableDescriptor desc, byte[][] splitKeys);</span> |
| <span class="source-line-no">196</span><span id="line-196"></span> |
| <span class="source-line-no">197</span><span id="line-197"> /**</span> |
| <span class="source-line-no">198</span><span id="line-198"> * Modify an existing table, more IRB friendly version.</span> |
| <span class="source-line-no">199</span><span id="line-199"> * @param desc modified description of the table</span> |
| <span class="source-line-no">200</span><span id="line-200"> */</span> |
| <span class="source-line-no">201</span><span id="line-201"> default CompletableFuture<Void> modifyTable(TableDescriptor desc) {</span> |
| <span class="source-line-no">202</span><span id="line-202"> return modifyTable(desc, true);</span> |
| <span class="source-line-no">203</span><span id="line-203"> }</span> |
| <span class="source-line-no">204</span><span id="line-204"></span> |
| <span class="source-line-no">205</span><span id="line-205"> /**</span> |
| <span class="source-line-no">206</span><span id="line-206"> * Modify an existing table, more IRB friendly version.</span> |
| <span class="source-line-no">207</span><span id="line-207"> * @param desc description of the table</span> |
| <span class="source-line-no">208</span><span id="line-208"> * @param reopenRegions By default, 'modifyTable' reopens all regions, potentially causing a RIT</span> |
| <span class="source-line-no">209</span><span id="line-209"> * (Region In Transition) storm in large tables. If set to 'false', regions</span> |
| <span class="source-line-no">210</span><span id="line-210"> * will remain unaware of the modification until they are individually</span> |
| <span class="source-line-no">211</span><span id="line-211"> * reopened. Please note that this may temporarily result in configuration</span> |
| <span class="source-line-no">212</span><span id="line-212"> * inconsistencies among regions.</span> |
| <span class="source-line-no">213</span><span id="line-213"> */</span> |
| <span class="source-line-no">214</span><span id="line-214"> CompletableFuture<Void> modifyTable(TableDescriptor desc, boolean reopenRegions);</span> |
| <span class="source-line-no">215</span><span id="line-215"></span> |
| <span class="source-line-no">216</span><span id="line-216"> /**</span> |
| <span class="source-line-no">217</span><span id="line-217"> * Change the store file tracker of the given table.</span> |
| <span class="source-line-no">218</span><span id="line-218"> * @param tableName the table you want to change</span> |
| <span class="source-line-no">219</span><span id="line-219"> * @param dstSFT the destination store file tracker</span> |
| <span class="source-line-no">220</span><span id="line-220"> */</span> |
| <span class="source-line-no">221</span><span id="line-221"> CompletableFuture<Void> modifyTableStoreFileTracker(TableName tableName, String dstSFT);</span> |
| <span class="source-line-no">222</span><span id="line-222"></span> |
| <span class="source-line-no">223</span><span id="line-223"> /**</span> |
| <span class="source-line-no">224</span><span id="line-224"> * Deletes a table.</span> |
| <span class="source-line-no">225</span><span id="line-225"> * @param tableName name of table to delete</span> |
| <span class="source-line-no">226</span><span id="line-226"> */</span> |
| <span class="source-line-no">227</span><span id="line-227"> CompletableFuture<Void> deleteTable(TableName tableName);</span> |
| <span class="source-line-no">228</span><span id="line-228"></span> |
| <span class="source-line-no">229</span><span id="line-229"> /**</span> |
| <span class="source-line-no">230</span><span id="line-230"> * Truncate a table.</span> |
| <span class="source-line-no">231</span><span id="line-231"> * @param tableName name of table to truncate</span> |
| <span class="source-line-no">232</span><span id="line-232"> * @param preserveSplits True if the splits should be preserved</span> |
| <span class="source-line-no">233</span><span id="line-233"> */</span> |
| <span class="source-line-no">234</span><span id="line-234"> CompletableFuture<Void> truncateTable(TableName tableName, boolean preserveSplits);</span> |
| <span class="source-line-no">235</span><span id="line-235"></span> |
| <span class="source-line-no">236</span><span id="line-236"> /**</span> |
| <span class="source-line-no">237</span><span id="line-237"> * Enable a table. The table has to be in disabled state for it to be enabled.</span> |
| <span class="source-line-no">238</span><span id="line-238"> * @param tableName name of the table</span> |
| <span class="source-line-no">239</span><span id="line-239"> */</span> |
| <span class="source-line-no">240</span><span id="line-240"> CompletableFuture<Void> enableTable(TableName tableName);</span> |
| <span class="source-line-no">241</span><span id="line-241"></span> |
| <span class="source-line-no">242</span><span id="line-242"> /**</span> |
| <span class="source-line-no">243</span><span id="line-243"> * Disable a table. The table has to be in enabled state for it to be disabled.</span> |
| <span class="source-line-no">244</span><span id="line-244"> */</span> |
| <span class="source-line-no">245</span><span id="line-245"> CompletableFuture<Void> disableTable(TableName tableName);</span> |
| <span class="source-line-no">246</span><span id="line-246"></span> |
| <span class="source-line-no">247</span><span id="line-247"> /**</span> |
| <span class="source-line-no">248</span><span id="line-248"> * Check if a table is enabled.</span> |
| <span class="source-line-no">249</span><span id="line-249"> * @param tableName name of table to check</span> |
| <span class="source-line-no">250</span><span id="line-250"> * @return true if table is on-line. The return value will be wrapped by a</span> |
| <span class="source-line-no">251</span><span id="line-251"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">252</span><span id="line-252"> */</span> |
| <span class="source-line-no">253</span><span id="line-253"> CompletableFuture<Boolean> isTableEnabled(TableName tableName);</span> |
| <span class="source-line-no">254</span><span id="line-254"></span> |
| <span class="source-line-no">255</span><span id="line-255"> /**</span> |
| <span class="source-line-no">256</span><span id="line-256"> * Check if a table is disabled.</span> |
| <span class="source-line-no">257</span><span id="line-257"> * @param tableName name of table to check</span> |
| <span class="source-line-no">258</span><span id="line-258"> * @return true if table is off-line. The return value will be wrapped by a</span> |
| <span class="source-line-no">259</span><span id="line-259"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">260</span><span id="line-260"> */</span> |
| <span class="source-line-no">261</span><span id="line-261"> CompletableFuture<Boolean> isTableDisabled(TableName tableName);</span> |
| <span class="source-line-no">262</span><span id="line-262"></span> |
| <span class="source-line-no">263</span><span id="line-263"> /**</span> |
| <span class="source-line-no">264</span><span id="line-264"> * Check if a table is available.</span> |
| <span class="source-line-no">265</span><span id="line-265"> * @param tableName name of table to check</span> |
| <span class="source-line-no">266</span><span id="line-266"> * @return true if all regions of the table are available. The return value will be wrapped by a</span> |
| <span class="source-line-no">267</span><span id="line-267"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">268</span><span id="line-268"> */</span> |
| <span class="source-line-no">269</span><span id="line-269"> CompletableFuture<Boolean> isTableAvailable(TableName tableName);</span> |
| <span class="source-line-no">270</span><span id="line-270"></span> |
| <span class="source-line-no">271</span><span id="line-271"> /**</span> |
| <span class="source-line-no">272</span><span id="line-272"> * Add a column family to an existing table.</span> |
| <span class="source-line-no">273</span><span id="line-273"> * @param tableName name of the table to add column family to</span> |
| <span class="source-line-no">274</span><span id="line-274"> * @param columnFamily column family descriptor of column family to be added</span> |
| <span class="source-line-no">275</span><span id="line-275"> */</span> |
| <span class="source-line-no">276</span><span id="line-276"> CompletableFuture<Void> addColumnFamily(TableName tableName, ColumnFamilyDescriptor columnFamily);</span> |
| <span class="source-line-no">277</span><span id="line-277"></span> |
| <span class="source-line-no">278</span><span id="line-278"> /**</span> |
| <span class="source-line-no">279</span><span id="line-279"> * Delete a column family from a table.</span> |
| <span class="source-line-no">280</span><span id="line-280"> * @param tableName name of table</span> |
| <span class="source-line-no">281</span><span id="line-281"> * @param columnFamily name of column family to be deleted</span> |
| <span class="source-line-no">282</span><span id="line-282"> */</span> |
| <span class="source-line-no">283</span><span id="line-283"> CompletableFuture<Void> deleteColumnFamily(TableName tableName, byte[] columnFamily);</span> |
| <span class="source-line-no">284</span><span id="line-284"></span> |
| <span class="source-line-no">285</span><span id="line-285"> /**</span> |
| <span class="source-line-no">286</span><span id="line-286"> * Modify an existing column family on a table.</span> |
| <span class="source-line-no">287</span><span id="line-287"> * @param tableName name of table</span> |
| <span class="source-line-no">288</span><span id="line-288"> * @param columnFamily new column family descriptor to use</span> |
| <span class="source-line-no">289</span><span id="line-289"> */</span> |
| <span class="source-line-no">290</span><span id="line-290"> CompletableFuture<Void> modifyColumnFamily(TableName tableName,</span> |
| <span class="source-line-no">291</span><span id="line-291"> ColumnFamilyDescriptor columnFamily);</span> |
| <span class="source-line-no">292</span><span id="line-292"></span> |
| <span class="source-line-no">293</span><span id="line-293"> /**</span> |
| <span class="source-line-no">294</span><span id="line-294"> * Change the store file tracker of the given table's given family.</span> |
| <span class="source-line-no">295</span><span id="line-295"> * @param tableName the table you want to change</span> |
| <span class="source-line-no">296</span><span id="line-296"> * @param family the family you want to change</span> |
| <span class="source-line-no">297</span><span id="line-297"> * @param dstSFT the destination store file tracker</span> |
| <span class="source-line-no">298</span><span id="line-298"> */</span> |
| <span class="source-line-no">299</span><span id="line-299"> CompletableFuture<Void> modifyColumnFamilyStoreFileTracker(TableName tableName, byte[] family,</span> |
| <span class="source-line-no">300</span><span id="line-300"> String dstSFT);</span> |
| <span class="source-line-no">301</span><span id="line-301"></span> |
| <span class="source-line-no">302</span><span id="line-302"> /**</span> |
| <span class="source-line-no">303</span><span id="line-303"> * Create a new namespace.</span> |
| <span class="source-line-no">304</span><span id="line-304"> * @param descriptor descriptor which describes the new namespace</span> |
| <span class="source-line-no">305</span><span id="line-305"> */</span> |
| <span class="source-line-no">306</span><span id="line-306"> CompletableFuture<Void> createNamespace(NamespaceDescriptor descriptor);</span> |
| <span class="source-line-no">307</span><span id="line-307"></span> |
| <span class="source-line-no">308</span><span id="line-308"> /**</span> |
| <span class="source-line-no">309</span><span id="line-309"> * Modify an existing namespace.</span> |
| <span class="source-line-no">310</span><span id="line-310"> * @param descriptor descriptor which describes the new namespace</span> |
| <span class="source-line-no">311</span><span id="line-311"> */</span> |
| <span class="source-line-no">312</span><span id="line-312"> CompletableFuture<Void> modifyNamespace(NamespaceDescriptor descriptor);</span> |
| <span class="source-line-no">313</span><span id="line-313"></span> |
| <span class="source-line-no">314</span><span id="line-314"> /**</span> |
| <span class="source-line-no">315</span><span id="line-315"> * Delete an existing namespace. Only empty namespaces (no tables) can be removed.</span> |
| <span class="source-line-no">316</span><span id="line-316"> * @param name namespace name</span> |
| <span class="source-line-no">317</span><span id="line-317"> */</span> |
| <span class="source-line-no">318</span><span id="line-318"> CompletableFuture<Void> deleteNamespace(String name);</span> |
| <span class="source-line-no">319</span><span id="line-319"></span> |
| <span class="source-line-no">320</span><span id="line-320"> /**</span> |
| <span class="source-line-no">321</span><span id="line-321"> * Get a namespace descriptor by name</span> |
| <span class="source-line-no">322</span><span id="line-322"> * @param name name of namespace descriptor</span> |
| <span class="source-line-no">323</span><span id="line-323"> * @return A descriptor wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">324</span><span id="line-324"> */</span> |
| <span class="source-line-no">325</span><span id="line-325"> CompletableFuture<NamespaceDescriptor> getNamespaceDescriptor(String name);</span> |
| <span class="source-line-no">326</span><span id="line-326"></span> |
| <span class="source-line-no">327</span><span id="line-327"> /**</span> |
| <span class="source-line-no">328</span><span id="line-328"> * List available namespaces</span> |
| <span class="source-line-no">329</span><span id="line-329"> * @return List of namespaces wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">330</span><span id="line-330"> */</span> |
| <span class="source-line-no">331</span><span id="line-331"> CompletableFuture<List<String>> listNamespaces();</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"> * List available namespace descriptors</span> |
| <span class="source-line-no">335</span><span id="line-335"> * @return List of descriptors wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">336</span><span id="line-336"> */</span> |
| <span class="source-line-no">337</span><span id="line-337"> CompletableFuture<List<NamespaceDescriptor>> listNamespaceDescriptors();</span> |
| <span class="source-line-no">338</span><span id="line-338"></span> |
| <span class="source-line-no">339</span><span id="line-339"> /**</span> |
| <span class="source-line-no">340</span><span id="line-340"> * Get all the online regions on a region server.</span> |
| <span class="source-line-no">341</span><span id="line-341"> */</span> |
| <span class="source-line-no">342</span><span id="line-342"> CompletableFuture<List<RegionInfo>> getRegions(ServerName serverName);</span> |
| <span class="source-line-no">343</span><span id="line-343"></span> |
| <span class="source-line-no">344</span><span id="line-344"> /**</span> |
| <span class="source-line-no">345</span><span id="line-345"> * Get the regions of a given table.</span> |
| <span class="source-line-no">346</span><span id="line-346"> */</span> |
| <span class="source-line-no">347</span><span id="line-347"> CompletableFuture<List<RegionInfo>> getRegions(TableName tableName);</span> |
| <span class="source-line-no">348</span><span id="line-348"></span> |
| <span class="source-line-no">349</span><span id="line-349"> /**</span> |
| <span class="source-line-no">350</span><span id="line-350"> * Flush a table.</span> |
| <span class="source-line-no">351</span><span id="line-351"> * @param tableName table to flush</span> |
| <span class="source-line-no">352</span><span id="line-352"> */</span> |
| <span class="source-line-no">353</span><span id="line-353"> CompletableFuture<Void> flush(TableName tableName);</span> |
| <span class="source-line-no">354</span><span id="line-354"></span> |
| <span class="source-line-no">355</span><span id="line-355"> /**</span> |
| <span class="source-line-no">356</span><span id="line-356"> * Flush the specified column family stores on all regions of the passed table. This runs as a</span> |
| <span class="source-line-no">357</span><span id="line-357"> * synchronous operation.</span> |
| <span class="source-line-no">358</span><span id="line-358"> * @param tableName table to flush</span> |
| <span class="source-line-no">359</span><span id="line-359"> * @param columnFamily column family within a table</span> |
| <span class="source-line-no">360</span><span id="line-360"> */</span> |
| <span class="source-line-no">361</span><span id="line-361"> CompletableFuture<Void> flush(TableName tableName, byte[] columnFamily);</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"> * Flush the specified column family stores on all regions of the passed table. This runs as a</span> |
| <span class="source-line-no">365</span><span id="line-365"> * synchronous operation.</span> |
| <span class="source-line-no">366</span><span id="line-366"> * @param tableName table to flush</span> |
| <span class="source-line-no">367</span><span id="line-367"> * @param columnFamilies column families within a table</span> |
| <span class="source-line-no">368</span><span id="line-368"> */</span> |
| <span class="source-line-no">369</span><span id="line-369"> CompletableFuture<Void> flush(TableName tableName, List<byte[]> columnFamilies);</span> |
| <span class="source-line-no">370</span><span id="line-370"></span> |
| <span class="source-line-no">371</span><span id="line-371"> /**</span> |
| <span class="source-line-no">372</span><span id="line-372"> * Flush an individual region.</span> |
| <span class="source-line-no">373</span><span id="line-373"> * @param regionName region to flush</span> |
| <span class="source-line-no">374</span><span id="line-374"> */</span> |
| <span class="source-line-no">375</span><span id="line-375"> CompletableFuture<Void> flushRegion(byte[] regionName);</span> |
| <span class="source-line-no">376</span><span id="line-376"></span> |
| <span class="source-line-no">377</span><span id="line-377"> /**</span> |
| <span class="source-line-no">378</span><span id="line-378"> * Flush a column family within a region.</span> |
| <span class="source-line-no">379</span><span id="line-379"> * @param regionName region to flush</span> |
| <span class="source-line-no">380</span><span id="line-380"> * @param columnFamily column family within a region. If not present, flush the region's all</span> |
| <span class="source-line-no">381</span><span id="line-381"> * column families.</span> |
| <span class="source-line-no">382</span><span id="line-382"> */</span> |
| <span class="source-line-no">383</span><span id="line-383"> CompletableFuture<Void> flushRegion(byte[] regionName, byte[] columnFamily);</span> |
| <span class="source-line-no">384</span><span id="line-384"></span> |
| <span class="source-line-no">385</span><span id="line-385"> /**</span> |
| <span class="source-line-no">386</span><span id="line-386"> * Flush all region on the region server.</span> |
| <span class="source-line-no">387</span><span id="line-387"> * @param serverName server to flush</span> |
| <span class="source-line-no">388</span><span id="line-388"> */</span> |
| <span class="source-line-no">389</span><span id="line-389"> CompletableFuture<Void> flushRegionServer(ServerName serverName);</span> |
| <span class="source-line-no">390</span><span id="line-390"></span> |
| <span class="source-line-no">391</span><span id="line-391"> /**</span> |
| <span class="source-line-no">392</span><span id="line-392"> * Compact a table. When the returned CompletableFuture is done, it only means the compact request</span> |
| <span class="source-line-no">393</span><span id="line-393"> * was sent to HBase and may need some time to finish the compact operation. Throws</span> |
| <span class="source-line-no">394</span><span id="line-394"> * {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.</span> |
| <span class="source-line-no">395</span><span id="line-395"> * @param tableName table to compact</span> |
| <span class="source-line-no">396</span><span id="line-396"> */</span> |
| <span class="source-line-no">397</span><span id="line-397"> default CompletableFuture<Void> compact(TableName tableName) {</span> |
| <span class="source-line-no">398</span><span id="line-398"> return compact(tableName, CompactType.NORMAL);</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"> /**</span> |
| <span class="source-line-no">402</span><span id="line-402"> * Compact a column family within a table. When the returned CompletableFuture is done, it only</span> |
| <span class="source-line-no">403</span><span id="line-403"> * means the compact request was sent to HBase and may need some time to finish the compact</span> |
| <span class="source-line-no">404</span><span id="line-404"> * operation. Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.</span> |
| <span class="source-line-no">405</span><span id="line-405"> * @param tableName table to compact</span> |
| <span class="source-line-no">406</span><span id="line-406"> * @param columnFamily column family within a table. If not present, compact the table's all</span> |
| <span class="source-line-no">407</span><span id="line-407"> * column families.</span> |
| <span class="source-line-no">408</span><span id="line-408"> */</span> |
| <span class="source-line-no">409</span><span id="line-409"> default CompletableFuture<Void> compact(TableName tableName, byte[] columnFamily) {</span> |
| <span class="source-line-no">410</span><span id="line-410"> return compact(tableName, columnFamily, CompactType.NORMAL);</span> |
| <span class="source-line-no">411</span><span id="line-411"> }</span> |
| <span class="source-line-no">412</span><span id="line-412"></span> |
| <span class="source-line-no">413</span><span id="line-413"> /**</span> |
| <span class="source-line-no">414</span><span id="line-414"> * Compact a table. When the returned CompletableFuture is done, it only means the compact request</span> |
| <span class="source-line-no">415</span><span id="line-415"> * was sent to HBase and may need some time to finish the compact operation. Throws</span> |
| <span class="source-line-no">416</span><span id="line-416"> * {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for normal compaction</span> |
| <span class="source-line-no">417</span><span id="line-417"> * type.</span> |
| <span class="source-line-no">418</span><span id="line-418"> * @param tableName table to compact</span> |
| <span class="source-line-no">419</span><span id="line-419"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">420</span><span id="line-420"> */</span> |
| <span class="source-line-no">421</span><span id="line-421"> CompletableFuture<Void> compact(TableName tableName, CompactType compactType);</span> |
| <span class="source-line-no">422</span><span id="line-422"></span> |
| <span class="source-line-no">423</span><span id="line-423"> /**</span> |
| <span class="source-line-no">424</span><span id="line-424"> * Compact a column family within a table. When the returned CompletableFuture is done, it only</span> |
| <span class="source-line-no">425</span><span id="line-425"> * means the compact request was sent to HBase and may need some time to finish the compact</span> |
| <span class="source-line-no">426</span><span id="line-426"> * operation. Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for</span> |
| <span class="source-line-no">427</span><span id="line-427"> * normal compaction type.</span> |
| <span class="source-line-no">428</span><span id="line-428"> * @param tableName table to compact</span> |
| <span class="source-line-no">429</span><span id="line-429"> * @param columnFamily column family within a table</span> |
| <span class="source-line-no">430</span><span id="line-430"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">431</span><span id="line-431"> */</span> |
| <span class="source-line-no">432</span><span id="line-432"> CompletableFuture<Void> compact(TableName tableName, byte[] columnFamily,</span> |
| <span class="source-line-no">433</span><span id="line-433"> CompactType compactType);</span> |
| <span class="source-line-no">434</span><span id="line-434"></span> |
| <span class="source-line-no">435</span><span id="line-435"> /**</span> |
| <span class="source-line-no">436</span><span id="line-436"> * Compact an individual region. When the returned CompletableFuture is done, it only means the</span> |
| <span class="source-line-no">437</span><span id="line-437"> * compact request was sent to HBase and may need some time to finish the compact operation.</span> |
| <span class="source-line-no">438</span><span id="line-438"> * @param regionName region to compact</span> |
| <span class="source-line-no">439</span><span id="line-439"> */</span> |
| <span class="source-line-no">440</span><span id="line-440"> CompletableFuture<Void> compactRegion(byte[] regionName);</span> |
| <span class="source-line-no">441</span><span id="line-441"></span> |
| <span class="source-line-no">442</span><span id="line-442"> /**</span> |
| <span class="source-line-no">443</span><span id="line-443"> * Compact a column family within a region. When the returned CompletableFuture is done, it only</span> |
| <span class="source-line-no">444</span><span id="line-444"> * means the compact request was sent to HBase and may need some time to finish the compact</span> |
| <span class="source-line-no">445</span><span id="line-445"> * operation.</span> |
| <span class="source-line-no">446</span><span id="line-446"> * @param regionName region to compact</span> |
| <span class="source-line-no">447</span><span id="line-447"> * @param columnFamily column family within a region. If not present, compact the region's all</span> |
| <span class="source-line-no">448</span><span id="line-448"> * column families.</span> |
| <span class="source-line-no">449</span><span id="line-449"> */</span> |
| <span class="source-line-no">450</span><span id="line-450"> CompletableFuture<Void> compactRegion(byte[] regionName, byte[] columnFamily);</span> |
| <span class="source-line-no">451</span><span id="line-451"></span> |
| <span class="source-line-no">452</span><span id="line-452"> /**</span> |
| <span class="source-line-no">453</span><span id="line-453"> * Major compact a table. When the returned CompletableFuture is done, it only means the compact</span> |
| <span class="source-line-no">454</span><span id="line-454"> * request was sent to HBase and may need some time to finish the compact operation. Throws</span> |
| <span class="source-line-no">455</span><span id="line-455"> * {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.</span> |
| <span class="source-line-no">456</span><span id="line-456"> * @param tableName table to major compact</span> |
| <span class="source-line-no">457</span><span id="line-457"> */</span> |
| <span class="source-line-no">458</span><span id="line-458"> default CompletableFuture<Void> majorCompact(TableName tableName) {</span> |
| <span class="source-line-no">459</span><span id="line-459"> return majorCompact(tableName, CompactType.NORMAL);</span> |
| <span class="source-line-no">460</span><span id="line-460"> }</span> |
| <span class="source-line-no">461</span><span id="line-461"></span> |
| <span class="source-line-no">462</span><span id="line-462"> /**</span> |
| <span class="source-line-no">463</span><span id="line-463"> * Major compact a column family within a table. When the returned CompletableFuture is done, it</span> |
| <span class="source-line-no">464</span><span id="line-464"> * only means the compact request was sent to HBase and may need some time to finish the compact</span> |
| <span class="source-line-no">465</span><span id="line-465"> * operation. Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for</span> |
| <span class="source-line-no">466</span><span id="line-466"> * normal compaction. type.</span> |
| <span class="source-line-no">467</span><span id="line-467"> * @param tableName table to major compact</span> |
| <span class="source-line-no">468</span><span id="line-468"> * @param columnFamily column family within a table. If not present, major compact the table's all</span> |
| <span class="source-line-no">469</span><span id="line-469"> * column families.</span> |
| <span class="source-line-no">470</span><span id="line-470"> */</span> |
| <span class="source-line-no">471</span><span id="line-471"> default CompletableFuture<Void> majorCompact(TableName tableName, byte[] columnFamily) {</span> |
| <span class="source-line-no">472</span><span id="line-472"> return majorCompact(tableName, columnFamily, CompactType.NORMAL);</span> |
| <span class="source-line-no">473</span><span id="line-473"> }</span> |
| <span class="source-line-no">474</span><span id="line-474"></span> |
| <span class="source-line-no">475</span><span id="line-475"> /**</span> |
| <span class="source-line-no">476</span><span id="line-476"> * Major compact a table. When the returned CompletableFuture is done, it only means the compact</span> |
| <span class="source-line-no">477</span><span id="line-477"> * request was sent to HBase and may need some time to finish the compact operation. Throws</span> |
| <span class="source-line-no">478</span><span id="line-478"> * {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for normal compaction</span> |
| <span class="source-line-no">479</span><span id="line-479"> * type.</span> |
| <span class="source-line-no">480</span><span id="line-480"> * @param tableName table to major compact</span> |
| <span class="source-line-no">481</span><span id="line-481"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">482</span><span id="line-482"> */</span> |
| <span class="source-line-no">483</span><span id="line-483"> CompletableFuture<Void> majorCompact(TableName tableName, CompactType compactType);</span> |
| <span class="source-line-no">484</span><span id="line-484"></span> |
| <span class="source-line-no">485</span><span id="line-485"> /**</span> |
| <span class="source-line-no">486</span><span id="line-486"> * Major compact a column family within a table. When the returned CompletableFuture is done, it</span> |
| <span class="source-line-no">487</span><span id="line-487"> * only means the compact request was sent to HBase and may need some time to finish the compact</span> |
| <span class="source-line-no">488</span><span id="line-488"> * operation. Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.</span> |
| <span class="source-line-no">489</span><span id="line-489"> * @param tableName table to major compact</span> |
| <span class="source-line-no">490</span><span id="line-490"> * @param columnFamily column family within a table. If not present, major compact the table's all</span> |
| <span class="source-line-no">491</span><span id="line-491"> * column families.</span> |
| <span class="source-line-no">492</span><span id="line-492"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">493</span><span id="line-493"> */</span> |
| <span class="source-line-no">494</span><span id="line-494"> CompletableFuture<Void> majorCompact(TableName tableName, byte[] columnFamily,</span> |
| <span class="source-line-no">495</span><span id="line-495"> CompactType compactType);</span> |
| <span class="source-line-no">496</span><span id="line-496"></span> |
| <span class="source-line-no">497</span><span id="line-497"> /**</span> |
| <span class="source-line-no">498</span><span id="line-498"> * Major compact a region. When the returned CompletableFuture is done, it only means the compact</span> |
| <span class="source-line-no">499</span><span id="line-499"> * request was sent to HBase and may need some time to finish the compact operation.</span> |
| <span class="source-line-no">500</span><span id="line-500"> * @param regionName region to major compact</span> |
| <span class="source-line-no">501</span><span id="line-501"> */</span> |
| <span class="source-line-no">502</span><span id="line-502"> CompletableFuture<Void> majorCompactRegion(byte[] regionName);</span> |
| <span class="source-line-no">503</span><span id="line-503"></span> |
| <span class="source-line-no">504</span><span id="line-504"> /**</span> |
| <span class="source-line-no">505</span><span id="line-505"> * Major compact a column family within region. When the returned CompletableFuture is done, it</span> |
| <span class="source-line-no">506</span><span id="line-506"> * only means the compact request was sent to HBase and may need some time to finish the compact</span> |
| <span class="source-line-no">507</span><span id="line-507"> * operation.</span> |
| <span class="source-line-no">508</span><span id="line-508"> * @param regionName region to major compact</span> |
| <span class="source-line-no">509</span><span id="line-509"> * @param columnFamily column family within a region. If not present, major compact the region's</span> |
| <span class="source-line-no">510</span><span id="line-510"> * all column families.</span> |
| <span class="source-line-no">511</span><span id="line-511"> */</span> |
| <span class="source-line-no">512</span><span id="line-512"> CompletableFuture<Void> majorCompactRegion(byte[] regionName, byte[] columnFamily);</span> |
| <span class="source-line-no">513</span><span id="line-513"></span> |
| <span class="source-line-no">514</span><span id="line-514"> /**</span> |
| <span class="source-line-no">515</span><span id="line-515"> * Compact all regions on the region server.</span> |
| <span class="source-line-no">516</span><span id="line-516"> * @param serverName the region server name</span> |
| <span class="source-line-no">517</span><span id="line-517"> */</span> |
| <span class="source-line-no">518</span><span id="line-518"> CompletableFuture<Void> compactRegionServer(ServerName serverName);</span> |
| <span class="source-line-no">519</span><span id="line-519"></span> |
| <span class="source-line-no">520</span><span id="line-520"> /**</span> |
| <span class="source-line-no">521</span><span id="line-521"> * Compact all regions on the region server.</span> |
| <span class="source-line-no">522</span><span id="line-522"> * @param serverName the region server name</span> |
| <span class="source-line-no">523</span><span id="line-523"> */</span> |
| <span class="source-line-no">524</span><span id="line-524"> CompletableFuture<Void> majorCompactRegionServer(ServerName serverName);</span> |
| <span class="source-line-no">525</span><span id="line-525"></span> |
| <span class="source-line-no">526</span><span id="line-526"> /**</span> |
| <span class="source-line-no">527</span><span id="line-527"> * Turn the Merge switch on or off.</span> |
| <span class="source-line-no">528</span><span id="line-528"> * @param enabled enabled or not</span> |
| <span class="source-line-no">529</span><span id="line-529"> * @return Previous switch value wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">530</span><span id="line-530"> */</span> |
| <span class="source-line-no">531</span><span id="line-531"> default CompletableFuture<Boolean> mergeSwitch(boolean enabled) {</span> |
| <span class="source-line-no">532</span><span id="line-532"> return mergeSwitch(enabled, false);</span> |
| <span class="source-line-no">533</span><span id="line-533"> }</span> |
| <span class="source-line-no">534</span><span id="line-534"></span> |
| <span class="source-line-no">535</span><span id="line-535"> /**</span> |
| <span class="source-line-no">536</span><span id="line-536"> * Turn the Merge switch on or off.</span> |
| <span class="source-line-no">537</span><span id="line-537"> * <p/></span> |
| <span class="source-line-no">538</span><span id="line-538"> * Notice that, the method itself is always non-blocking, which means it will always return</span> |
| <span class="source-line-no">539</span><span id="line-539"> * immediately. The {@code drainMerges} parameter only effects when will we complete the returned</span> |
| <span class="source-line-no">540</span><span id="line-540"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">541</span><span id="line-541"> * @param enabled enabled or not</span> |
| <span class="source-line-no">542</span><span id="line-542"> * @param drainMerges If <code>true</code>, it waits until current merge() call, if outstanding,</span> |
| <span class="source-line-no">543</span><span id="line-543"> * to return.</span> |
| <span class="source-line-no">544</span><span id="line-544"> * @return Previous switch value wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">545</span><span id="line-545"> */</span> |
| <span class="source-line-no">546</span><span id="line-546"> CompletableFuture<Boolean> mergeSwitch(boolean enabled, boolean drainMerges);</span> |
| <span class="source-line-no">547</span><span id="line-547"></span> |
| <span class="source-line-no">548</span><span id="line-548"> /**</span> |
| <span class="source-line-no">549</span><span id="line-549"> * Query the current state of the Merge switch.</span> |
| <span class="source-line-no">550</span><span id="line-550"> * @return true if the switch is on, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">551</span><span id="line-551"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">552</span><span id="line-552"> */</span> |
| <span class="source-line-no">553</span><span id="line-553"> CompletableFuture<Boolean> isMergeEnabled();</span> |
| <span class="source-line-no">554</span><span id="line-554"></span> |
| <span class="source-line-no">555</span><span id="line-555"> /**</span> |
| <span class="source-line-no">556</span><span id="line-556"> * Turn the Split switch on or off.</span> |
| <span class="source-line-no">557</span><span id="line-557"> * @param enabled enabled or not</span> |
| <span class="source-line-no">558</span><span id="line-558"> * @return Previous switch value wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">559</span><span id="line-559"> */</span> |
| <span class="source-line-no">560</span><span id="line-560"> default CompletableFuture<Boolean> splitSwitch(boolean enabled) {</span> |
| <span class="source-line-no">561</span><span id="line-561"> return splitSwitch(enabled, false);</span> |
| <span class="source-line-no">562</span><span id="line-562"> }</span> |
| <span class="source-line-no">563</span><span id="line-563"></span> |
| <span class="source-line-no">564</span><span id="line-564"> /**</span> |
| <span class="source-line-no">565</span><span id="line-565"> * Turn the Split switch on or off.</span> |
| <span class="source-line-no">566</span><span id="line-566"> * <p/></span> |
| <span class="source-line-no">567</span><span id="line-567"> * Notice that, the method itself is always non-blocking, which means it will always return</span> |
| <span class="source-line-no">568</span><span id="line-568"> * immediately. The {@code drainSplits} parameter only effects when will we complete the returned</span> |
| <span class="source-line-no">569</span><span id="line-569"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">570</span><span id="line-570"> * @param enabled enabled or not</span> |
| <span class="source-line-no">571</span><span id="line-571"> * @param drainSplits If <code>true</code>, it waits until current split() call, if outstanding,</span> |
| <span class="source-line-no">572</span><span id="line-572"> * to return.</span> |
| <span class="source-line-no">573</span><span id="line-573"> * @return Previous switch value wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">574</span><span id="line-574"> */</span> |
| <span class="source-line-no">575</span><span id="line-575"> CompletableFuture<Boolean> splitSwitch(boolean enabled, boolean drainSplits);</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"> * Query the current state of the Split switch.</span> |
| <span class="source-line-no">579</span><span id="line-579"> * @return true if the switch is on, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">580</span><span id="line-580"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">581</span><span id="line-581"> */</span> |
| <span class="source-line-no">582</span><span id="line-582"> CompletableFuture<Boolean> isSplitEnabled();</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"> * Merge two regions.</span> |
| <span class="source-line-no">586</span><span id="line-586"> * @param nameOfRegionA encoded or full name of region a</span> |
| <span class="source-line-no">587</span><span id="line-587"> * @param nameOfRegionB encoded or full name of region b</span> |
| <span class="source-line-no">588</span><span id="line-588"> * @param forcible true if do a compulsory merge, otherwise we will only merge two adjacent</span> |
| <span class="source-line-no">589</span><span id="line-589"> * regions</span> |
| <span class="source-line-no">590</span><span id="line-590"> * @deprecated since 2.3.0 and will be removed in 4.0.0.Use {@link #mergeRegions(List, boolean)}</span> |
| <span class="source-line-no">591</span><span id="line-591"> * instead.</span> |
| <span class="source-line-no">592</span><span id="line-592"> */</span> |
| <span class="source-line-no">593</span><span id="line-593"> @Deprecated</span> |
| <span class="source-line-no">594</span><span id="line-594"> default CompletableFuture<Void> mergeRegions(byte[] nameOfRegionA, byte[] nameOfRegionB,</span> |
| <span class="source-line-no">595</span><span id="line-595"> boolean forcible) {</span> |
| <span class="source-line-no">596</span><span id="line-596"> return mergeRegions(Arrays.asList(nameOfRegionA, nameOfRegionB), forcible);</span> |
| <span class="source-line-no">597</span><span id="line-597"> }</span> |
| <span class="source-line-no">598</span><span id="line-598"></span> |
| <span class="source-line-no">599</span><span id="line-599"> /**</span> |
| <span class="source-line-no">600</span><span id="line-600"> * Merge multiple regions (>=2).</span> |
| <span class="source-line-no">601</span><span id="line-601"> * @param nameOfRegionsToMerge encoded or full name of daughter regions</span> |
| <span class="source-line-no">602</span><span id="line-602"> * @param forcible true if do a compulsory merge, otherwise we will only merge two</span> |
| <span class="source-line-no">603</span><span id="line-603"> * adjacent regions</span> |
| <span class="source-line-no">604</span><span id="line-604"> */</span> |
| <span class="source-line-no">605</span><span id="line-605"> CompletableFuture<Void> mergeRegions(List<byte[]> nameOfRegionsToMerge, boolean forcible);</span> |
| <span class="source-line-no">606</span><span id="line-606"></span> |
| <span class="source-line-no">607</span><span id="line-607"> /**</span> |
| <span class="source-line-no">608</span><span id="line-608"> * Split a table. The method will execute split action for each region in table.</span> |
| <span class="source-line-no">609</span><span id="line-609"> * @param tableName table to split</span> |
| <span class="source-line-no">610</span><span id="line-610"> */</span> |
| <span class="source-line-no">611</span><span id="line-611"> CompletableFuture<Void> split(TableName tableName);</span> |
| <span class="source-line-no">612</span><span id="line-612"></span> |
| <span class="source-line-no">613</span><span id="line-613"> /**</span> |
| <span class="source-line-no">614</span><span id="line-614"> * Split an individual region.</span> |
| <span class="source-line-no">615</span><span id="line-615"> * @param regionName region to split</span> |
| <span class="source-line-no">616</span><span id="line-616"> */</span> |
| <span class="source-line-no">617</span><span id="line-617"> CompletableFuture<Void> splitRegion(byte[] regionName);</span> |
| <span class="source-line-no">618</span><span id="line-618"></span> |
| <span class="source-line-no">619</span><span id="line-619"> /**</span> |
| <span class="source-line-no">620</span><span id="line-620"> * Split a table.</span> |
| <span class="source-line-no">621</span><span id="line-621"> * @param tableName table to split</span> |
| <span class="source-line-no">622</span><span id="line-622"> * @param splitPoint the explicit position to split on</span> |
| <span class="source-line-no">623</span><span id="line-623"> */</span> |
| <span class="source-line-no">624</span><span id="line-624"> CompletableFuture<Void> split(TableName tableName, byte[] splitPoint);</span> |
| <span class="source-line-no">625</span><span id="line-625"></span> |
| <span class="source-line-no">626</span><span id="line-626"> /**</span> |
| <span class="source-line-no">627</span><span id="line-627"> * Split an individual region.</span> |
| <span class="source-line-no">628</span><span id="line-628"> * @param regionName region to split</span> |
| <span class="source-line-no">629</span><span id="line-629"> * @param splitPoint the explicit position to split on. If not present, it will decide by region</span> |
| <span class="source-line-no">630</span><span id="line-630"> * server.</span> |
| <span class="source-line-no">631</span><span id="line-631"> */</span> |
| <span class="source-line-no">632</span><span id="line-632"> CompletableFuture<Void> splitRegion(byte[] regionName, byte[] splitPoint);</span> |
| <span class="source-line-no">633</span><span id="line-633"></span> |
| <span class="source-line-no">634</span><span id="line-634"> /**</span> |
| <span class="source-line-no">635</span><span id="line-635"> * Truncate an individual region.</span> |
| <span class="source-line-no">636</span><span id="line-636"> * @param regionName region to truncate</span> |
| <span class="source-line-no">637</span><span id="line-637"> */</span> |
| <span class="source-line-no">638</span><span id="line-638"> CompletableFuture<Void> truncateRegion(byte[] regionName);</span> |
| <span class="source-line-no">639</span><span id="line-639"></span> |
| <span class="source-line-no">640</span><span id="line-640"> /**</span> |
| <span class="source-line-no">641</span><span id="line-641"> * Assign an individual region.</span> |
| <span class="source-line-no">642</span><span id="line-642"> * @param regionName Encoded or full name of region to assign.</span> |
| <span class="source-line-no">643</span><span id="line-643"> */</span> |
| <span class="source-line-no">644</span><span id="line-644"> CompletableFuture<Void> assign(byte[] regionName);</span> |
| <span class="source-line-no">645</span><span id="line-645"></span> |
| <span class="source-line-no">646</span><span id="line-646"> /**</span> |
| <span class="source-line-no">647</span><span id="line-647"> * Unassign a region from current hosting regionserver. Region will then be assigned to a</span> |
| <span class="source-line-no">648</span><span id="line-648"> * regionserver chosen at random. Region could be reassigned back to the same server. Use</span> |
| <span class="source-line-no">649</span><span id="line-649"> * {@link #move(byte[], ServerName)} if you want to control the region movement.</span> |
| <span class="source-line-no">650</span><span id="line-650"> * @param regionName Encoded or full name of region to unassign.</span> |
| <span class="source-line-no">651</span><span id="line-651"> */</span> |
| <span class="source-line-no">652</span><span id="line-652"> CompletableFuture<Void> unassign(byte[] regionName);</span> |
| <span class="source-line-no">653</span><span id="line-653"></span> |
| <span class="source-line-no">654</span><span id="line-654"> /**</span> |
| <span class="source-line-no">655</span><span id="line-655"> * Unassign a region from current hosting regionserver. Region will then be assigned to a</span> |
| <span class="source-line-no">656</span><span id="line-656"> * regionserver chosen at random. Region could be reassigned back to the same server. Use</span> |
| <span class="source-line-no">657</span><span id="line-657"> * {@link #move(byte[], ServerName)} if you want to control the region movement.</span> |
| <span class="source-line-no">658</span><span id="line-658"> * @param regionName Encoded or full name of region to unassign. Will clear any existing</span> |
| <span class="source-line-no">659</span><span id="line-659"> * RegionPlan if one found.</span> |
| <span class="source-line-no">660</span><span id="line-660"> * @param forcible If true, force unassign (Will remove region from regions-in-transition too if</span> |
| <span class="source-line-no">661</span><span id="line-661"> * present. If results in double assignment use hbck -fix to resolve. To be used</span> |
| <span class="source-line-no">662</span><span id="line-662"> * by experts).</span> |
| <span class="source-line-no">663</span><span id="line-663"> * @deprecated since 2.4.0 and will be removed in 4.0.0. Use {@link #unassign(byte[])} instead.</span> |
| <span class="source-line-no">664</span><span id="line-664"> * @see <a href="https://issues.apache.org/jira/browse/HBASE-24875">HBASE-24875</a></span> |
| <span class="source-line-no">665</span><span id="line-665"> */</span> |
| <span class="source-line-no">666</span><span id="line-666"> @Deprecated</span> |
| <span class="source-line-no">667</span><span id="line-667"> default CompletableFuture<Void> unassign(byte[] regionName, boolean forcible) {</span> |
| <span class="source-line-no">668</span><span id="line-668"> return unassign(regionName);</span> |
| <span class="source-line-no">669</span><span id="line-669"> }</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"> * Offline specified region from master's in-memory state. It will not attempt to reassign the</span> |
| <span class="source-line-no">673</span><span id="line-673"> * 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">674</span><span id="line-674"> * still online as per Master's in memory state. If this API is incorrectly used on active region</span> |
| <span class="source-line-no">675</span><span id="line-675"> * then master will loose track of that region. This is a special method that should be used by</span> |
| <span class="source-line-no">676</span><span id="line-676"> * experts or hbck.</span> |
| <span class="source-line-no">677</span><span id="line-677"> * @param regionName Encoded or full name of region to offline</span> |
| <span class="source-line-no">678</span><span id="line-678"> */</span> |
| <span class="source-line-no">679</span><span id="line-679"> CompletableFuture<Void> offline(byte[] regionName);</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"> * Move the region <code>r</code> to a random server.</span> |
| <span class="source-line-no">683</span><span id="line-683"> * @param regionName Encoded or full name of region to move.</span> |
| <span class="source-line-no">684</span><span id="line-684"> */</span> |
| <span class="source-line-no">685</span><span id="line-685"> CompletableFuture<Void> move(byte[] regionName);</span> |
| <span class="source-line-no">686</span><span id="line-686"></span> |
| <span class="source-line-no">687</span><span id="line-687"> /**</span> |
| <span class="source-line-no">688</span><span id="line-688"> * Move the region <code>r</code> to <code>dest</code>.</span> |
| <span class="source-line-no">689</span><span id="line-689"> * @param regionName Encoded or full name of region to move.</span> |
| <span class="source-line-no">690</span><span id="line-690"> * @param destServerName The servername of the destination regionserver. If not present, we'll</span> |
| <span class="source-line-no">691</span><span id="line-691"> * assign to a random server. A server name is made of host, port and</span> |
| <span class="source-line-no">692</span><span id="line-692"> * startcode. Here is an example:</span> |
| <span class="source-line-no">693</span><span id="line-693"> * <code> host187.example.com,60020,1289493121758</code></span> |
| <span class="source-line-no">694</span><span id="line-694"> */</span> |
| <span class="source-line-no">695</span><span id="line-695"> CompletableFuture<Void> move(byte[] regionName, ServerName destServerName);</span> |
| <span class="source-line-no">696</span><span id="line-696"></span> |
| <span class="source-line-no">697</span><span id="line-697"> /**</span> |
| <span class="source-line-no">698</span><span id="line-698"> * Apply the new quota settings.</span> |
| <span class="source-line-no">699</span><span id="line-699"> * @param quota the quota settings</span> |
| <span class="source-line-no">700</span><span id="line-700"> */</span> |
| <span class="source-line-no">701</span><span id="line-701"> CompletableFuture<Void> setQuota(QuotaSettings quota);</span> |
| <span class="source-line-no">702</span><span id="line-702"></span> |
| <span class="source-line-no">703</span><span id="line-703"> /**</span> |
| <span class="source-line-no">704</span><span id="line-704"> * List the quotas based on the filter.</span> |
| <span class="source-line-no">705</span><span id="line-705"> * @param filter the quota settings filter</span> |
| <span class="source-line-no">706</span><span id="line-706"> * @return the QuotaSetting list, which wrapped by a CompletableFuture.</span> |
| <span class="source-line-no">707</span><span id="line-707"> */</span> |
| <span class="source-line-no">708</span><span id="line-708"> CompletableFuture<List<QuotaSettings>> getQuota(QuotaFilter filter);</span> |
| <span class="source-line-no">709</span><span id="line-709"></span> |
| <span class="source-line-no">710</span><span id="line-710"> /**</span> |
| <span class="source-line-no">711</span><span id="line-711"> * Add a new replication peer for replicating data to slave cluster</span> |
| <span class="source-line-no">712</span><span id="line-712"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">713</span><span id="line-713"> * @param peerConfig configuration for the replication slave cluster</span> |
| <span class="source-line-no">714</span><span id="line-714"> */</span> |
| <span class="source-line-no">715</span><span id="line-715"> default CompletableFuture<Void> addReplicationPeer(String peerId,</span> |
| <span class="source-line-no">716</span><span id="line-716"> ReplicationPeerConfig peerConfig) {</span> |
| <span class="source-line-no">717</span><span id="line-717"> return addReplicationPeer(peerId, peerConfig, true);</span> |
| <span class="source-line-no">718</span><span id="line-718"> }</span> |
| <span class="source-line-no">719</span><span id="line-719"></span> |
| <span class="source-line-no">720</span><span id="line-720"> /**</span> |
| <span class="source-line-no">721</span><span id="line-721"> * Add a new replication peer for replicating data to slave cluster</span> |
| <span class="source-line-no">722</span><span id="line-722"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">723</span><span id="line-723"> * @param peerConfig configuration for the replication slave cluster</span> |
| <span class="source-line-no">724</span><span id="line-724"> * @param enabled peer state, true if ENABLED and false if DISABLED</span> |
| <span class="source-line-no">725</span><span id="line-725"> */</span> |
| <span class="source-line-no">726</span><span id="line-726"> CompletableFuture<Void> addReplicationPeer(String peerId, ReplicationPeerConfig peerConfig,</span> |
| <span class="source-line-no">727</span><span id="line-727"> boolean enabled);</span> |
| <span class="source-line-no">728</span><span id="line-728"></span> |
| <span class="source-line-no">729</span><span id="line-729"> /**</span> |
| <span class="source-line-no">730</span><span id="line-730"> * Remove a peer and stop the replication</span> |
| <span class="source-line-no">731</span><span id="line-731"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">732</span><span id="line-732"> */</span> |
| <span class="source-line-no">733</span><span id="line-733"> CompletableFuture<Void> removeReplicationPeer(String peerId);</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"> * Restart the replication stream to the specified peer</span> |
| <span class="source-line-no">737</span><span id="line-737"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">738</span><span id="line-738"> */</span> |
| <span class="source-line-no">739</span><span id="line-739"> CompletableFuture<Void> enableReplicationPeer(String peerId);</span> |
| <span class="source-line-no">740</span><span id="line-740"></span> |
| <span class="source-line-no">741</span><span id="line-741"> /**</span> |
| <span class="source-line-no">742</span><span id="line-742"> * Stop the replication stream to the specified peer</span> |
| <span class="source-line-no">743</span><span id="line-743"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">744</span><span id="line-744"> */</span> |
| <span class="source-line-no">745</span><span id="line-745"> CompletableFuture<Void> disableReplicationPeer(String peerId);</span> |
| <span class="source-line-no">746</span><span id="line-746"></span> |
| <span class="source-line-no">747</span><span id="line-747"> /**</span> |
| <span class="source-line-no">748</span><span id="line-748"> * Returns the configured ReplicationPeerConfig for the specified peer</span> |
| <span class="source-line-no">749</span><span id="line-749"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">750</span><span id="line-750"> * @return ReplicationPeerConfig for the peer wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">751</span><span id="line-751"> */</span> |
| <span class="source-line-no">752</span><span id="line-752"> CompletableFuture<ReplicationPeerConfig> getReplicationPeerConfig(String peerId);</span> |
| <span class="source-line-no">753</span><span id="line-753"></span> |
| <span class="source-line-no">754</span><span id="line-754"> /**</span> |
| <span class="source-line-no">755</span><span id="line-755"> * Update the peerConfig for the specified peer</span> |
| <span class="source-line-no">756</span><span id="line-756"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">757</span><span id="line-757"> * @param peerConfig new config for the peer</span> |
| <span class="source-line-no">758</span><span id="line-758"> */</span> |
| <span class="source-line-no">759</span><span id="line-759"> CompletableFuture<Void> updateReplicationPeerConfig(String peerId,</span> |
| <span class="source-line-no">760</span><span id="line-760"> ReplicationPeerConfig peerConfig);</span> |
| <span class="source-line-no">761</span><span id="line-761"></span> |
| <span class="source-line-no">762</span><span id="line-762"> /**</span> |
| <span class="source-line-no">763</span><span id="line-763"> * Transit current cluster to a new state in a synchronous replication peer.</span> |
| <span class="source-line-no">764</span><span id="line-764"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">765</span><span id="line-765"> * @param state a new state of current cluster</span> |
| <span class="source-line-no">766</span><span id="line-766"> */</span> |
| <span class="source-line-no">767</span><span id="line-767"> CompletableFuture<Void> transitReplicationPeerSyncReplicationState(String peerId,</span> |
| <span class="source-line-no">768</span><span id="line-768"> SyncReplicationState state);</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"> * Get the current cluster state in a synchronous replication peer.</span> |
| <span class="source-line-no">772</span><span id="line-772"> * @param peerId a short name that identifies the peer</span> |
| <span class="source-line-no">773</span><span id="line-773"> * @return the current cluster state wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">774</span><span id="line-774"> */</span> |
| <span class="source-line-no">775</span><span id="line-775"> default CompletableFuture<SyncReplicationState></span> |
| <span class="source-line-no">776</span><span id="line-776"> getReplicationPeerSyncReplicationState(String peerId) {</span> |
| <span class="source-line-no">777</span><span id="line-777"> CompletableFuture<SyncReplicationState> future = new CompletableFuture<>();</span> |
| <span class="source-line-no">778</span><span id="line-778"> addListener(listReplicationPeers(Pattern.compile(peerId)), (peers, error) -> {</span> |
| <span class="source-line-no">779</span><span id="line-779"> if (error != null) {</span> |
| <span class="source-line-no">780</span><span id="line-780"> future.completeExceptionally(error);</span> |
| <span class="source-line-no">781</span><span id="line-781"> } else if (peers.isEmpty() || !peers.get(0).getPeerId().equals(peerId)) {</span> |
| <span class="source-line-no">782</span><span id="line-782"> future</span> |
| <span class="source-line-no">783</span><span id="line-783"> .completeExceptionally(new IOException("Replication peer " + peerId + " does not exist"));</span> |
| <span class="source-line-no">784</span><span id="line-784"> } else {</span> |
| <span class="source-line-no">785</span><span id="line-785"> future.complete(peers.get(0).getSyncReplicationState());</span> |
| <span class="source-line-no">786</span><span id="line-786"> }</span> |
| <span class="source-line-no">787</span><span id="line-787"> });</span> |
| <span class="source-line-no">788</span><span id="line-788"> return future;</span> |
| <span class="source-line-no">789</span><span id="line-789"> }</span> |
| <span class="source-line-no">790</span><span id="line-790"></span> |
| <span class="source-line-no">791</span><span id="line-791"> /**</span> |
| <span class="source-line-no">792</span><span id="line-792"> * Append the replicable table-cf config of the specified peer</span> |
| <span class="source-line-no">793</span><span id="line-793"> * @param peerId a short that identifies the cluster</span> |
| <span class="source-line-no">794</span><span id="line-794"> * @param tableCfs A map from tableName to column family names</span> |
| <span class="source-line-no">795</span><span id="line-795"> */</span> |
| <span class="source-line-no">796</span><span id="line-796"> CompletableFuture<Void> appendReplicationPeerTableCFs(String peerId,</span> |
| <span class="source-line-no">797</span><span id="line-797"> Map<TableName, List<String>> tableCfs);</span> |
| <span class="source-line-no">798</span><span id="line-798"></span> |
| <span class="source-line-no">799</span><span id="line-799"> /**</span> |
| <span class="source-line-no">800</span><span id="line-800"> * Remove some table-cfs from config of the specified peer</span> |
| <span class="source-line-no">801</span><span id="line-801"> * @param peerId a short name that identifies the cluster</span> |
| <span class="source-line-no">802</span><span id="line-802"> * @param tableCfs A map from tableName to column family names</span> |
| <span class="source-line-no">803</span><span id="line-803"> */</span> |
| <span class="source-line-no">804</span><span id="line-804"> CompletableFuture<Void> removeReplicationPeerTableCFs(String peerId,</span> |
| <span class="source-line-no">805</span><span id="line-805"> Map<TableName, List<String>> tableCfs);</span> |
| <span class="source-line-no">806</span><span id="line-806"></span> |
| <span class="source-line-no">807</span><span id="line-807"> /**</span> |
| <span class="source-line-no">808</span><span id="line-808"> * Return a list of replication peers.</span> |
| <span class="source-line-no">809</span><span id="line-809"> * @return a list of replication peers description. The return value will be wrapped by a</span> |
| <span class="source-line-no">810</span><span id="line-810"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">811</span><span id="line-811"> */</span> |
| <span class="source-line-no">812</span><span id="line-812"> CompletableFuture<List<ReplicationPeerDescription>> listReplicationPeers();</span> |
| <span class="source-line-no">813</span><span id="line-813"></span> |
| <span class="source-line-no">814</span><span id="line-814"> /**</span> |
| <span class="source-line-no">815</span><span id="line-815"> * Return a list of replication peers.</span> |
| <span class="source-line-no">816</span><span id="line-816"> * @param pattern The compiled regular expression to match peer id</span> |
| <span class="source-line-no">817</span><span id="line-817"> * @return a list of replication peers description. The return value will be wrapped by a</span> |
| <span class="source-line-no">818</span><span id="line-818"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">819</span><span id="line-819"> */</span> |
| <span class="source-line-no">820</span><span id="line-820"> CompletableFuture<List<ReplicationPeerDescription>> listReplicationPeers(Pattern pattern);</span> |
| <span class="source-line-no">821</span><span id="line-821"></span> |
| <span class="source-line-no">822</span><span id="line-822"> /**</span> |
| <span class="source-line-no">823</span><span id="line-823"> * Find all table and column families that are replicated from this cluster</span> |
| <span class="source-line-no">824</span><span id="line-824"> * @return the replicated table-cfs list of this cluster. The return value will be wrapped by a</span> |
| <span class="source-line-no">825</span><span id="line-825"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">826</span><span id="line-826"> */</span> |
| <span class="source-line-no">827</span><span id="line-827"> CompletableFuture<List<TableCFs>> listReplicatedTableCFs();</span> |
| <span class="source-line-no">828</span><span id="line-828"></span> |
| <span class="source-line-no">829</span><span id="line-829"> /**</span> |
| <span class="source-line-no">830</span><span id="line-830"> * Enable a table's replication switch.</span> |
| <span class="source-line-no">831</span><span id="line-831"> * @param tableName name of the table</span> |
| <span class="source-line-no">832</span><span id="line-832"> */</span> |
| <span class="source-line-no">833</span><span id="line-833"> CompletableFuture<Void> enableTableReplication(TableName tableName);</span> |
| <span class="source-line-no">834</span><span id="line-834"></span> |
| <span class="source-line-no">835</span><span id="line-835"> /**</span> |
| <span class="source-line-no">836</span><span id="line-836"> * Disable a table's replication switch.</span> |
| <span class="source-line-no">837</span><span id="line-837"> * @param tableName name of the table</span> |
| <span class="source-line-no">838</span><span id="line-838"> */</span> |
| <span class="source-line-no">839</span><span id="line-839"> CompletableFuture<Void> disableTableReplication(TableName tableName);</span> |
| <span class="source-line-no">840</span><span id="line-840"></span> |
| <span class="source-line-no">841</span><span id="line-841"> /**</span> |
| <span class="source-line-no">842</span><span id="line-842"> * Check if a replication peer is enabled.</span> |
| <span class="source-line-no">843</span><span id="line-843"> * @param peerId id of replication peer to check</span> |
| <span class="source-line-no">844</span><span id="line-844"> * @return true if replication peer is enabled. The return value will be wrapped by a</span> |
| <span class="source-line-no">845</span><span id="line-845"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">846</span><span id="line-846"> */</span> |
| <span class="source-line-no">847</span><span id="line-847"> CompletableFuture<Boolean> isReplicationPeerEnabled(String peerId);</span> |
| <span class="source-line-no">848</span><span id="line-848"></span> |
| <span class="source-line-no">849</span><span id="line-849"> /**</span> |
| <span class="source-line-no">850</span><span id="line-850"> * Enable or disable replication peer modification.</span> |
| <span class="source-line-no">851</span><span id="line-851"> * <p/></span> |
| <span class="source-line-no">852</span><span id="line-852"> * This is especially useful when you want to change the replication peer storage.</span> |
| <span class="source-line-no">853</span><span id="line-853"> * @param on {@code true} means enable, otherwise disable</span> |
| <span class="source-line-no">854</span><span id="line-854"> * @return the previous enable/disable state wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">855</span><span id="line-855"> */</span> |
| <span class="source-line-no">856</span><span id="line-856"> default CompletableFuture<Boolean> replicationPeerModificationSwitch(boolean on) {</span> |
| <span class="source-line-no">857</span><span id="line-857"> return replicationPeerModificationSwitch(on, false);</span> |
| <span class="source-line-no">858</span><span id="line-858"> }</span> |
| <span class="source-line-no">859</span><span id="line-859"></span> |
| <span class="source-line-no">860</span><span id="line-860"> /**</span> |
| <span class="source-line-no">861</span><span id="line-861"> * Enable or disable replication peer modification.</span> |
| <span class="source-line-no">862</span><span id="line-862"> * <p/></span> |
| <span class="source-line-no">863</span><span id="line-863"> * This is especially useful when you want to change the replication peer storage.</span> |
| <span class="source-line-no">864</span><span id="line-864"> * @param on {@code true} means enable, otherwise disable</span> |
| <span class="source-line-no">865</span><span id="line-865"> * @param drainProcedures if {@code true}, will wait until all the running replication peer</span> |
| <span class="source-line-no">866</span><span id="line-866"> * modification procedures finish</span> |
| <span class="source-line-no">867</span><span id="line-867"> * @return the previous enable/disable state wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">868</span><span id="line-868"> */</span> |
| <span class="source-line-no">869</span><span id="line-869"> CompletableFuture<Boolean> replicationPeerModificationSwitch(boolean on, boolean drainProcedures);</span> |
| <span class="source-line-no">870</span><span id="line-870"></span> |
| <span class="source-line-no">871</span><span id="line-871"> /**</span> |
| <span class="source-line-no">872</span><span id="line-872"> * Check whether replication peer modification is enabled.</span> |
| <span class="source-line-no">873</span><span id="line-873"> * @return {@code true} if modification is enabled, otherwise {@code false}, wrapped by a</span> |
| <span class="source-line-no">874</span><span id="line-874"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">875</span><span id="line-875"> */</span> |
| <span class="source-line-no">876</span><span id="line-876"> CompletableFuture<Boolean> isReplicationPeerModificationEnabled();</span> |
| <span class="source-line-no">877</span><span id="line-877"></span> |
| <span class="source-line-no">878</span><span id="line-878"> /**</span> |
| <span class="source-line-no">879</span><span id="line-879"> * Take a snapshot for the given table. If the table is enabled, a FLUSH-type snapshot will be</span> |
| <span class="source-line-no">880</span><span id="line-880"> * taken. If the table is disabled, an offline snapshot is taken. Snapshots are taken sequentially</span> |
| <span class="source-line-no">881</span><span id="line-881"> * even when requested concurrently, across all tables. Snapshots are considered unique based on</span> |
| <span class="source-line-no">882</span><span id="line-882"> * <b>the name of the snapshot</b>. Attempts to take a snapshot with the same name (even a</span> |
| <span class="source-line-no">883</span><span id="line-883"> * different type or with different parameters) will fail with a</span> |
| <span class="source-line-no">884</span><span id="line-884"> * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate</span> |
| <span class="source-line-no">885</span><span id="line-885"> * naming. Snapshot names follow the same naming constraints as tables in HBase. See</span> |
| <span class="source-line-no">886</span><span id="line-886"> * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.</span> |
| <span class="source-line-no">887</span><span id="line-887"> * @param snapshotName name of the snapshot to be created</span> |
| <span class="source-line-no">888</span><span id="line-888"> * @param tableName name of the table for which snapshot is created</span> |
| <span class="source-line-no">889</span><span id="line-889"> */</span> |
| <span class="source-line-no">890</span><span id="line-890"> default CompletableFuture<Void> snapshot(String snapshotName, TableName tableName) {</span> |
| <span class="source-line-no">891</span><span id="line-891"> return snapshot(snapshotName, tableName, SnapshotType.FLUSH);</span> |
| <span class="source-line-no">892</span><span id="line-892"> }</span> |
| <span class="source-line-no">893</span><span id="line-893"></span> |
| <span class="source-line-no">894</span><span id="line-894"> /**</span> |
| <span class="source-line-no">895</span><span id="line-895"> * Create typed snapshot of the table. Snapshots are considered unique based on <b>the name of the</span> |
| <span class="source-line-no">896</span><span id="line-896"> * snapshot</b>. Snapshots are taken sequentially even when requested concurrently, across all</span> |
| <span class="source-line-no">897</span><span id="line-897"> * tables. Attempts to take a snapshot with the same name (even a different type or with different</span> |
| <span class="source-line-no">898</span><span id="line-898"> * parameters) will fail with a {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException}</span> |
| <span class="source-line-no">899</span><span id="line-899"> * indicating the duplicate naming. Snapshot names follow the same naming constraints as tables in</span> |
| <span class="source-line-no">900</span><span id="line-900"> * HBase. See {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}.</span> |
| <span class="source-line-no">901</span><span id="line-901"> * @param snapshotName name to give the snapshot on the filesystem. Must be unique from all other</span> |
| <span class="source-line-no">902</span><span id="line-902"> * snapshots stored on the cluster</span> |
| <span class="source-line-no">903</span><span id="line-903"> * @param tableName name of the table to snapshot</span> |
| <span class="source-line-no">904</span><span id="line-904"> * @param type type of snapshot to take</span> |
| <span class="source-line-no">905</span><span id="line-905"> */</span> |
| <span class="source-line-no">906</span><span id="line-906"> default CompletableFuture<Void> snapshot(String snapshotName, TableName tableName,</span> |
| <span class="source-line-no">907</span><span id="line-907"> SnapshotType type) {</span> |
| <span class="source-line-no">908</span><span id="line-908"> return snapshot(new SnapshotDescription(snapshotName, tableName, type));</span> |
| <span class="source-line-no">909</span><span id="line-909"> }</span> |
| <span class="source-line-no">910</span><span id="line-910"></span> |
| <span class="source-line-no">911</span><span id="line-911"> /**</span> |
| <span class="source-line-no">912</span><span id="line-912"> * Take a snapshot and wait for the server to complete that snapshot asynchronously. Snapshots are</span> |
| <span class="source-line-no">913</span><span id="line-913"> * taken sequentially even when requested concurrently, across all tables. Snapshots are</span> |
| <span class="source-line-no">914</span><span id="line-914"> * considered unique based on <b>the name of the snapshot</b>. Attempts to take a snapshot with</span> |
| <span class="source-line-no">915</span><span id="line-915"> * the same name (even a different type or with different parameters) will fail with a</span> |
| <span class="source-line-no">916</span><span id="line-916"> * {@link org.apache.hadoop.hbase.snapshot.SnapshotCreationException} indicating the duplicate</span> |
| <span class="source-line-no">917</span><span id="line-917"> * naming. Snapshot names follow the same naming constraints as tables in HBase. See</span> |
| <span class="source-line-no">918</span><span id="line-918"> * {@link org.apache.hadoop.hbase.TableName#isLegalFullyQualifiedTableName(byte[])}. You should</span> |
| <span class="source-line-no">919</span><span id="line-919"> * probably use {@link #snapshot(String, org.apache.hadoop.hbase.TableName)} unless you are sure</span> |
| <span class="source-line-no">920</span><span id="line-920"> * about the type of snapshot that you want to take.</span> |
| <span class="source-line-no">921</span><span id="line-921"> * @param snapshot snapshot to take</span> |
| <span class="source-line-no">922</span><span id="line-922"> */</span> |
| <span class="source-line-no">923</span><span id="line-923"> CompletableFuture<Void> snapshot(SnapshotDescription snapshot);</span> |
| <span class="source-line-no">924</span><span id="line-924"></span> |
| <span class="source-line-no">925</span><span id="line-925"> /**</span> |
| <span class="source-line-no">926</span><span id="line-926"> * Check the current state of the passed snapshot. There are three possible states:</span> |
| <span class="source-line-no">927</span><span id="line-927"> * <ol></span> |
| <span class="source-line-no">928</span><span id="line-928"> * <li>running - returns <tt>false</tt></li></span> |
| <span class="source-line-no">929</span><span id="line-929"> * <li>finished - returns <tt>true</tt></li></span> |
| <span class="source-line-no">930</span><span id="line-930"> * <li>finished with error - throws the exception that caused the snapshot to fail</li></span> |
| <span class="source-line-no">931</span><span id="line-931"> * </ol></span> |
| <span class="source-line-no">932</span><span id="line-932"> * The cluster only knows about the most recent snapshot. Therefore, if another snapshot has been</span> |
| <span class="source-line-no">933</span><span id="line-933"> * run/started since the snapshot you are checking, you will receive an</span> |
| <span class="source-line-no">934</span><span id="line-934"> * {@link org.apache.hadoop.hbase.snapshot.UnknownSnapshotException}.</span> |
| <span class="source-line-no">935</span><span id="line-935"> * @param snapshot description of the snapshot to check</span> |
| <span class="source-line-no">936</span><span id="line-936"> * @return <tt>true</tt> if the snapshot is completed, <tt>false</tt> if the snapshot is still</span> |
| <span class="source-line-no">937</span><span id="line-937"> * running</span> |
| <span class="source-line-no">938</span><span id="line-938"> */</span> |
| <span class="source-line-no">939</span><span id="line-939"> CompletableFuture<Boolean> isSnapshotFinished(SnapshotDescription snapshot);</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"> * Restore the specified snapshot on the original table. (The table must be disabled) If the</span> |
| <span class="source-line-no">943</span><span id="line-943"> * "hbase.snapshot.restore.take.failsafe.snapshot" configuration property is set to true, a</span> |
| <span class="source-line-no">944</span><span id="line-944"> * snapshot of the current table is taken before executing the restore operation. In case of</span> |
| <span class="source-line-no">945</span><span id="line-945"> * restore failure, the failsafe snapshot will be restored. If the restore completes without</span> |
| <span class="source-line-no">946</span><span id="line-946"> * problem the failsafe snapshot is deleted.</span> |
| <span class="source-line-no">947</span><span id="line-947"> * @param snapshotName name of the snapshot to restore</span> |
| <span class="source-line-no">948</span><span id="line-948"> */</span> |
| <span class="source-line-no">949</span><span id="line-949"> CompletableFuture<Void> restoreSnapshot(String snapshotName);</span> |
| <span class="source-line-no">950</span><span id="line-950"></span> |
| <span class="source-line-no">951</span><span id="line-951"> /**</span> |
| <span class="source-line-no">952</span><span id="line-952"> * Restore the specified snapshot on the original table. (The table must be disabled) If</span> |
| <span class="source-line-no">953</span><span id="line-953"> * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before</span> |
| <span class="source-line-no">954</span><span id="line-954"> * executing the restore operation. In case of restore failure, the failsafe snapshot will be</span> |
| <span class="source-line-no">955</span><span id="line-955"> * restored. If the restore completes without problem the failsafe snapshot is deleted. The</span> |
| <span class="source-line-no">956</span><span id="line-956"> * failsafe snapshot name is configurable by using the property</span> |
| <span class="source-line-no">957</span><span id="line-957"> * "hbase.snapshot.restore.failsafe.name".</span> |
| <span class="source-line-no">958</span><span id="line-958"> * @param snapshotName name of the snapshot to restore</span> |
| <span class="source-line-no">959</span><span id="line-959"> * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken</span> |
| <span class="source-line-no">960</span><span id="line-960"> */</span> |
| <span class="source-line-no">961</span><span id="line-961"> default CompletableFuture<Void> restoreSnapshot(String snapshotName,</span> |
| <span class="source-line-no">962</span><span id="line-962"> boolean takeFailSafeSnapshot) {</span> |
| <span class="source-line-no">963</span><span id="line-963"> return restoreSnapshot(snapshotName, takeFailSafeSnapshot, false);</span> |
| <span class="source-line-no">964</span><span id="line-964"> }</span> |
| <span class="source-line-no">965</span><span id="line-965"></span> |
| <span class="source-line-no">966</span><span id="line-966"> /**</span> |
| <span class="source-line-no">967</span><span id="line-967"> * Restore the specified snapshot on the original table. (The table must be disabled) If</span> |
| <span class="source-line-no">968</span><span id="line-968"> * 'takeFailSafeSnapshot' is set to true, a snapshot of the current table is taken before</span> |
| <span class="source-line-no">969</span><span id="line-969"> * executing the restore operation. In case of restore failure, the failsafe snapshot will be</span> |
| <span class="source-line-no">970</span><span id="line-970"> * restored. If the restore completes without problem the failsafe snapshot is deleted. The</span> |
| <span class="source-line-no">971</span><span id="line-971"> * failsafe snapshot name is configurable by using the property</span> |
| <span class="source-line-no">972</span><span id="line-972"> * "hbase.snapshot.restore.failsafe.name".</span> |
| <span class="source-line-no">973</span><span id="line-973"> * @param snapshotName name of the snapshot to restore</span> |
| <span class="source-line-no">974</span><span id="line-974"> * @param takeFailSafeSnapshot true if the failsafe snapshot should be taken</span> |
| <span class="source-line-no">975</span><span id="line-975"> * @param restoreAcl <code>true</code> to restore acl of snapshot</span> |
| <span class="source-line-no">976</span><span id="line-976"> */</span> |
| <span class="source-line-no">977</span><span id="line-977"> CompletableFuture<Void> restoreSnapshot(String snapshotName, boolean takeFailSafeSnapshot,</span> |
| <span class="source-line-no">978</span><span id="line-978"> boolean restoreAcl);</span> |
| <span class="source-line-no">979</span><span id="line-979"></span> |
| <span class="source-line-no">980</span><span id="line-980"> /**</span> |
| <span class="source-line-no">981</span><span id="line-981"> * Create a new table by cloning the snapshot content.</span> |
| <span class="source-line-no">982</span><span id="line-982"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">983</span><span id="line-983"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">984</span><span id="line-984"> */</span> |
| <span class="source-line-no">985</span><span id="line-985"> default CompletableFuture<Void> cloneSnapshot(String snapshotName, TableName tableName) {</span> |
| <span class="source-line-no">986</span><span id="line-986"> return cloneSnapshot(snapshotName, tableName, false);</span> |
| <span class="source-line-no">987</span><span id="line-987"> }</span> |
| <span class="source-line-no">988</span><span id="line-988"></span> |
| <span class="source-line-no">989</span><span id="line-989"> /**</span> |
| <span class="source-line-no">990</span><span id="line-990"> * Create a new table by cloning the snapshot content.</span> |
| <span class="source-line-no">991</span><span id="line-991"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">992</span><span id="line-992"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">993</span><span id="line-993"> * @param restoreAcl <code>true</code> to restore acl of snapshot</span> |
| <span class="source-line-no">994</span><span id="line-994"> */</span> |
| <span class="source-line-no">995</span><span id="line-995"> default CompletableFuture<Void> cloneSnapshot(String snapshotName, TableName tableName,</span> |
| <span class="source-line-no">996</span><span id="line-996"> boolean restoreAcl) {</span> |
| <span class="source-line-no">997</span><span id="line-997"> return cloneSnapshot(snapshotName, tableName, restoreAcl, null);</span> |
| <span class="source-line-no">998</span><span id="line-998"> }</span> |
| <span class="source-line-no">999</span><span id="line-999"></span> |
| <span class="source-line-no">1000</span><span id="line-1000"> /**</span> |
| <span class="source-line-no">1001</span><span id="line-1001"> * Create a new table by cloning the snapshot content.</span> |
| <span class="source-line-no">1002</span><span id="line-1002"> * @param snapshotName name of the snapshot to be cloned</span> |
| <span class="source-line-no">1003</span><span id="line-1003"> * @param tableName name of the table where the snapshot will be restored</span> |
| <span class="source-line-no">1004</span><span id="line-1004"> * @param restoreAcl <code>true</code> to restore acl of snapshot</span> |
| <span class="source-line-no">1005</span><span id="line-1005"> * @param customSFT specify the StroreFileTracker used for the table</span> |
| <span class="source-line-no">1006</span><span id="line-1006"> */</span> |
| <span class="source-line-no">1007</span><span id="line-1007"> CompletableFuture<Void> cloneSnapshot(String snapshotName, TableName tableName,</span> |
| <span class="source-line-no">1008</span><span id="line-1008"> boolean restoreAcl, String customSFT);</span> |
| <span class="source-line-no">1009</span><span id="line-1009"></span> |
| <span class="source-line-no">1010</span><span id="line-1010"> /**</span> |
| <span class="source-line-no">1011</span><span id="line-1011"> * List completed snapshots.</span> |
| <span class="source-line-no">1012</span><span id="line-1012"> * @return a list of snapshot descriptors for completed snapshots wrapped by a</span> |
| <span class="source-line-no">1013</span><span id="line-1013"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1014</span><span id="line-1014"> */</span> |
| <span class="source-line-no">1015</span><span id="line-1015"> CompletableFuture<List<SnapshotDescription>> listSnapshots();</span> |
| <span class="source-line-no">1016</span><span id="line-1016"></span> |
| <span class="source-line-no">1017</span><span id="line-1017"> /**</span> |
| <span class="source-line-no">1018</span><span id="line-1018"> * List all the completed snapshots matching the given pattern.</span> |
| <span class="source-line-no">1019</span><span id="line-1019"> * @param pattern The compiled regular expression to match against</span> |
| <span class="source-line-no">1020</span><span id="line-1020"> * @return - returns a List of SnapshotDescription wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1021</span><span id="line-1021"> */</span> |
| <span class="source-line-no">1022</span><span id="line-1022"> CompletableFuture<List<SnapshotDescription>> listSnapshots(Pattern pattern);</span> |
| <span class="source-line-no">1023</span><span id="line-1023"></span> |
| <span class="source-line-no">1024</span><span id="line-1024"> /**</span> |
| <span class="source-line-no">1025</span><span id="line-1025"> * List all the completed snapshots matching the given table name pattern.</span> |
| <span class="source-line-no">1026</span><span id="line-1026"> * @param tableNamePattern The compiled table name regular expression to match against</span> |
| <span class="source-line-no">1027</span><span id="line-1027"> * @return - returns a List of completed SnapshotDescription wrapped by a</span> |
| <span class="source-line-no">1028</span><span id="line-1028"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1029</span><span id="line-1029"> */</span> |
| <span class="source-line-no">1030</span><span id="line-1030"> CompletableFuture<List<SnapshotDescription>> listTableSnapshots(Pattern tableNamePattern);</span> |
| <span class="source-line-no">1031</span><span id="line-1031"></span> |
| <span class="source-line-no">1032</span><span id="line-1032"> /**</span> |
| <span class="source-line-no">1033</span><span id="line-1033"> * List all the completed snapshots matching the given table name regular expression and snapshot</span> |
| <span class="source-line-no">1034</span><span id="line-1034"> * name regular expression.</span> |
| <span class="source-line-no">1035</span><span id="line-1035"> * @param tableNamePattern The compiled table name regular expression to match against</span> |
| <span class="source-line-no">1036</span><span id="line-1036"> * @param snapshotNamePattern The compiled snapshot name regular expression to match against</span> |
| <span class="source-line-no">1037</span><span id="line-1037"> * @return - returns a List of completed SnapshotDescription wrapped by a</span> |
| <span class="source-line-no">1038</span><span id="line-1038"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1039</span><span id="line-1039"> */</span> |
| <span class="source-line-no">1040</span><span id="line-1040"> CompletableFuture<List<SnapshotDescription>> listTableSnapshots(Pattern tableNamePattern,</span> |
| <span class="source-line-no">1041</span><span id="line-1041"> Pattern snapshotNamePattern);</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"> * Delete an existing snapshot.</span> |
| <span class="source-line-no">1045</span><span id="line-1045"> * @param snapshotName name of the snapshot</span> |
| <span class="source-line-no">1046</span><span id="line-1046"> */</span> |
| <span class="source-line-no">1047</span><span id="line-1047"> CompletableFuture<Void> deleteSnapshot(String snapshotName);</span> |
| <span class="source-line-no">1048</span><span id="line-1048"></span> |
| <span class="source-line-no">1049</span><span id="line-1049"> /**</span> |
| <span class="source-line-no">1050</span><span id="line-1050"> * Delete all existing snapshots.</span> |
| <span class="source-line-no">1051</span><span id="line-1051"> */</span> |
| <span class="source-line-no">1052</span><span id="line-1052"> CompletableFuture<Void> deleteSnapshots();</span> |
| <span class="source-line-no">1053</span><span id="line-1053"></span> |
| <span class="source-line-no">1054</span><span id="line-1054"> /**</span> |
| <span class="source-line-no">1055</span><span id="line-1055"> * Delete existing snapshots whose names match the pattern passed.</span> |
| <span class="source-line-no">1056</span><span id="line-1056"> * @param pattern pattern for names of the snapshot to match</span> |
| <span class="source-line-no">1057</span><span id="line-1057"> */</span> |
| <span class="source-line-no">1058</span><span id="line-1058"> CompletableFuture<Void> deleteSnapshots(Pattern pattern);</span> |
| <span class="source-line-no">1059</span><span id="line-1059"></span> |
| <span class="source-line-no">1060</span><span id="line-1060"> /**</span> |
| <span class="source-line-no">1061</span><span id="line-1061"> * Delete all existing snapshots matching the given table name pattern.</span> |
| <span class="source-line-no">1062</span><span id="line-1062"> * @param tableNamePattern The compiled table name regular expression to match against</span> |
| <span class="source-line-no">1063</span><span id="line-1063"> */</span> |
| <span class="source-line-no">1064</span><span id="line-1064"> CompletableFuture<Void> deleteTableSnapshots(Pattern tableNamePattern);</span> |
| <span class="source-line-no">1065</span><span id="line-1065"></span> |
| <span class="source-line-no">1066</span><span id="line-1066"> /**</span> |
| <span class="source-line-no">1067</span><span id="line-1067"> * Delete all existing snapshots matching the given table name regular expression and snapshot</span> |
| <span class="source-line-no">1068</span><span id="line-1068"> * name regular expression.</span> |
| <span class="source-line-no">1069</span><span id="line-1069"> * @param tableNamePattern The compiled table name regular expression to match against</span> |
| <span class="source-line-no">1070</span><span id="line-1070"> * @param snapshotNamePattern The compiled snapshot name regular expression to match against</span> |
| <span class="source-line-no">1071</span><span id="line-1071"> */</span> |
| <span class="source-line-no">1072</span><span id="line-1072"> CompletableFuture<Void> deleteTableSnapshots(Pattern tableNamePattern,</span> |
| <span class="source-line-no">1073</span><span id="line-1073"> Pattern snapshotNamePattern);</span> |
| <span class="source-line-no">1074</span><span id="line-1074"></span> |
| <span class="source-line-no">1075</span><span id="line-1075"> /**</span> |
| <span class="source-line-no">1076</span><span id="line-1076"> * Execute a distributed procedure on a cluster.</span> |
| <span class="source-line-no">1077</span><span id="line-1077"> * @param signature A distributed procedure is uniquely identified by its signature (default the</span> |
| <span class="source-line-no">1078</span><span id="line-1078"> * root ZK node name of the procedure).</span> |
| <span class="source-line-no">1079</span><span id="line-1079"> * @param instance The instance name of the procedure. For some procedures, this parameter is</span> |
| <span class="source-line-no">1080</span><span id="line-1080"> * optional.</span> |
| <span class="source-line-no">1081</span><span id="line-1081"> * @param props Property/Value pairs of properties passing to the procedure</span> |
| <span class="source-line-no">1082</span><span id="line-1082"> */</span> |
| <span class="source-line-no">1083</span><span id="line-1083"> CompletableFuture<Void> execProcedure(String signature, String instance,</span> |
| <span class="source-line-no">1084</span><span id="line-1084"> Map<String, String> props);</span> |
| <span class="source-line-no">1085</span><span id="line-1085"></span> |
| <span class="source-line-no">1086</span><span id="line-1086"> /**</span> |
| <span class="source-line-no">1087</span><span id="line-1087"> * Execute a distributed procedure on a cluster.</span> |
| <span class="source-line-no">1088</span><span id="line-1088"> * @param signature A distributed procedure is uniquely identified by its signature (default the</span> |
| <span class="source-line-no">1089</span><span id="line-1089"> * root ZK node name of the procedure).</span> |
| <span class="source-line-no">1090</span><span id="line-1090"> * @param instance The instance name of the procedure. For some procedures, this parameter is</span> |
| <span class="source-line-no">1091</span><span id="line-1091"> * optional.</span> |
| <span class="source-line-no">1092</span><span id="line-1092"> * @param props Property/Value pairs of properties passing to the procedure</span> |
| <span class="source-line-no">1093</span><span id="line-1093"> * @return data returned after procedure execution. null if no return data.</span> |
| <span class="source-line-no">1094</span><span id="line-1094"> */</span> |
| <span class="source-line-no">1095</span><span id="line-1095"> CompletableFuture<byte[]> execProcedureWithReturn(String signature, String instance,</span> |
| <span class="source-line-no">1096</span><span id="line-1096"> Map<String, String> props);</span> |
| <span class="source-line-no">1097</span><span id="line-1097"></span> |
| <span class="source-line-no">1098</span><span id="line-1098"> /**</span> |
| <span class="source-line-no">1099</span><span id="line-1099"> * Check the current state of the specified procedure. There are three possible states:</span> |
| <span class="source-line-no">1100</span><span id="line-1100"> * <ol></span> |
| <span class="source-line-no">1101</span><span id="line-1101"> * <li>running - returns <tt>false</tt></li></span> |
| <span class="source-line-no">1102</span><span id="line-1102"> * <li>finished - returns <tt>true</tt></li></span> |
| <span class="source-line-no">1103</span><span id="line-1103"> * <li>finished with error - throws the exception that caused the procedure to fail</li></span> |
| <span class="source-line-no">1104</span><span id="line-1104"> * </ol></span> |
| <span class="source-line-no">1105</span><span id="line-1105"> * @param signature The signature that uniquely identifies a procedure</span> |
| <span class="source-line-no">1106</span><span id="line-1106"> * @param instance The instance name of the procedure</span> |
| <span class="source-line-no">1107</span><span id="line-1107"> * @param props Property/Value pairs of properties passing to the procedure</span> |
| <span class="source-line-no">1108</span><span id="line-1108"> * @return true if the specified procedure is finished successfully, false if it is still running.</span> |
| <span class="source-line-no">1109</span><span id="line-1109"> * The value is wrapped by {@link CompletableFuture}</span> |
| <span class="source-line-no">1110</span><span id="line-1110"> */</span> |
| <span class="source-line-no">1111</span><span id="line-1111"> CompletableFuture<Boolean> isProcedureFinished(String signature, String instance,</span> |
| <span class="source-line-no">1112</span><span id="line-1112"> Map<String, String> props);</span> |
| <span class="source-line-no">1113</span><span id="line-1113"></span> |
| <span class="source-line-no">1114</span><span id="line-1114"> /**</span> |
| <span class="source-line-no">1115</span><span id="line-1115"> * Abort a procedure Do not use. Usually it is ignored but if not, it can do more damage than</span> |
| <span class="source-line-no">1116</span><span id="line-1116"> * good. See hbck2.</span> |
| <span class="source-line-no">1117</span><span id="line-1117"> * @param procId ID of the procedure to abort</span> |
| <span class="source-line-no">1118</span><span id="line-1118"> * @param mayInterruptIfRunning if the proc completed at least one step, should it be aborted?</span> |
| <span class="source-line-no">1119</span><span id="line-1119"> * @return true if aborted, false if procedure already completed or does not exist. the value is</span> |
| <span class="source-line-no">1120</span><span id="line-1120"> * wrapped by {@link CompletableFuture}</span> |
| <span class="source-line-no">1121</span><span id="line-1121"> * @deprecated since 2.1.1 and will be removed in 4.0.0.</span> |
| <span class="source-line-no">1122</span><span id="line-1122"> * @see <a href="https://issues.apache.org/jira/browse/HBASE-21223">HBASE-21223</a></span> |
| <span class="source-line-no">1123</span><span id="line-1123"> */</span> |
| <span class="source-line-no">1124</span><span id="line-1124"> @Deprecated</span> |
| <span class="source-line-no">1125</span><span id="line-1125"> CompletableFuture<Boolean> abortProcedure(long procId, boolean mayInterruptIfRunning);</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"> * List procedures</span> |
| <span class="source-line-no">1129</span><span id="line-1129"> * @return procedure list JSON wrapped by {@link CompletableFuture}</span> |
| <span class="source-line-no">1130</span><span id="line-1130"> */</span> |
| <span class="source-line-no">1131</span><span id="line-1131"> CompletableFuture<String> getProcedures();</span> |
| <span class="source-line-no">1132</span><span id="line-1132"></span> |
| <span class="source-line-no">1133</span><span id="line-1133"> /**</span> |
| <span class="source-line-no">1134</span><span id="line-1134"> * List locks.</span> |
| <span class="source-line-no">1135</span><span id="line-1135"> * @return lock list JSON wrapped by {@link CompletableFuture}</span> |
| <span class="source-line-no">1136</span><span id="line-1136"> */</span> |
| <span class="source-line-no">1137</span><span id="line-1137"> CompletableFuture<String> getLocks();</span> |
| <span class="source-line-no">1138</span><span id="line-1138"></span> |
| <span class="source-line-no">1139</span><span id="line-1139"> /**</span> |
| <span class="source-line-no">1140</span><span id="line-1140"> * Mark region server(s) as decommissioned to prevent additional regions from getting assigned to</span> |
| <span class="source-line-no">1141</span><span id="line-1141"> * them. Optionally unload the regions on the servers. If there are multiple servers to be</span> |
| <span class="source-line-no">1142</span><span id="line-1142"> * decommissioned, decommissioning them at the same time can prevent wasteful region movements.</span> |
| <span class="source-line-no">1143</span><span id="line-1143"> * Region unloading is asynchronous.</span> |
| <span class="source-line-no">1144</span><span id="line-1144"> * @param servers The list of servers to decommission.</span> |
| <span class="source-line-no">1145</span><span id="line-1145"> * @param offload True to offload the regions from the decommissioned servers</span> |
| <span class="source-line-no">1146</span><span id="line-1146"> */</span> |
| <span class="source-line-no">1147</span><span id="line-1147"> CompletableFuture<Void> decommissionRegionServers(List<ServerName> servers, boolean offload);</span> |
| <span class="source-line-no">1148</span><span id="line-1148"></span> |
| <span class="source-line-no">1149</span><span id="line-1149"> /**</span> |
| <span class="source-line-no">1150</span><span id="line-1150"> * List region servers marked as decommissioned, which can not be assigned regions.</span> |
| <span class="source-line-no">1151</span><span id="line-1151"> * @return List of decommissioned region servers wrapped by {@link CompletableFuture}</span> |
| <span class="source-line-no">1152</span><span id="line-1152"> */</span> |
| <span class="source-line-no">1153</span><span id="line-1153"> CompletableFuture<List<ServerName>> listDecommissionedRegionServers();</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"> * Remove decommission marker from a region server to allow regions assignments. Load regions onto</span> |
| <span class="source-line-no">1157</span><span id="line-1157"> * the server if a list of regions is given. Region loading is asynchronous.</span> |
| <span class="source-line-no">1158</span><span id="line-1158"> * @param server The server to recommission.</span> |
| <span class="source-line-no">1159</span><span id="line-1159"> * @param encodedRegionNames Regions to load onto the server.</span> |
| <span class="source-line-no">1160</span><span id="line-1160"> */</span> |
| <span class="source-line-no">1161</span><span id="line-1161"> CompletableFuture<Void> recommissionRegionServer(ServerName server,</span> |
| <span class="source-line-no">1162</span><span id="line-1162"> List<byte[]> encodedRegionNames);</span> |
| <span class="source-line-no">1163</span><span id="line-1163"></span> |
| <span class="source-line-no">1164</span><span id="line-1164"> /** Returns cluster status wrapped by {@link CompletableFuture} */</span> |
| <span class="source-line-no">1165</span><span id="line-1165"> CompletableFuture<ClusterMetrics> getClusterMetrics();</span> |
| <span class="source-line-no">1166</span><span id="line-1166"></span> |
| <span class="source-line-no">1167</span><span id="line-1167"> /** Returns cluster status wrapped by {@link CompletableFuture} */</span> |
| <span class="source-line-no">1168</span><span id="line-1168"> CompletableFuture<ClusterMetrics> getClusterMetrics(EnumSet<Option> options);</span> |
| <span class="source-line-no">1169</span><span id="line-1169"></span> |
| <span class="source-line-no">1170</span><span id="line-1170"> /** Returns current master server name wrapped by {@link CompletableFuture} */</span> |
| <span class="source-line-no">1171</span><span id="line-1171"> default CompletableFuture<ServerName> getMaster() {</span> |
| <span class="source-line-no">1172</span><span id="line-1172"> return getClusterMetrics(EnumSet.of(Option.MASTER)).thenApply(ClusterMetrics::getMasterName);</span> |
| <span class="source-line-no">1173</span><span id="line-1173"> }</span> |
| <span class="source-line-no">1174</span><span id="line-1174"></span> |
| <span class="source-line-no">1175</span><span id="line-1175"> /** Returns current backup master list wrapped by {@link CompletableFuture} */</span> |
| <span class="source-line-no">1176</span><span id="line-1176"> default CompletableFuture<Collection<ServerName>> getBackupMasters() {</span> |
| <span class="source-line-no">1177</span><span id="line-1177"> return getClusterMetrics(EnumSet.of(Option.BACKUP_MASTERS))</span> |
| <span class="source-line-no">1178</span><span id="line-1178"> .thenApply(ClusterMetrics::getBackupMasterNames);</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"> /** Returns current live region servers list wrapped by {@link CompletableFuture} */</span> |
| <span class="source-line-no">1182</span><span id="line-1182"> default CompletableFuture<Collection<ServerName>> getRegionServers() {</span> |
| <span class="source-line-no">1183</span><span id="line-1183"> return getClusterMetrics(EnumSet.of(Option.SERVERS_NAME))</span> |
| <span class="source-line-no">1184</span><span id="line-1184"> .thenApply(ClusterMetrics::getServersName);</span> |
| <span class="source-line-no">1185</span><span id="line-1185"> }</span> |
| <span class="source-line-no">1186</span><span id="line-1186"></span> |
| <span class="source-line-no">1187</span><span id="line-1187"> default CompletableFuture<Collection<ServerName>></span> |
| <span class="source-line-no">1188</span><span id="line-1188"> getRegionServers(boolean excludeDecommissionedRS) {</span> |
| <span class="source-line-no">1189</span><span id="line-1189"> CompletableFuture<Collection<ServerName>> future = new CompletableFuture<>();</span> |
| <span class="source-line-no">1190</span><span id="line-1190"> addListener(</span> |
| <span class="source-line-no">1191</span><span id="line-1191"> getClusterMetrics(EnumSet.of(Option.SERVERS_NAME)).thenApply(ClusterMetrics::getServersName),</span> |
| <span class="source-line-no">1192</span><span id="line-1192"> (allServers, err) -> {</span> |
| <span class="source-line-no">1193</span><span id="line-1193"> if (err != null) {</span> |
| <span class="source-line-no">1194</span><span id="line-1194"> future.completeExceptionally(err);</span> |
| <span class="source-line-no">1195</span><span id="line-1195"> } else {</span> |
| <span class="source-line-no">1196</span><span id="line-1196"> if (!excludeDecommissionedRS) {</span> |
| <span class="source-line-no">1197</span><span id="line-1197"> future.complete(allServers);</span> |
| <span class="source-line-no">1198</span><span id="line-1198"> } else {</span> |
| <span class="source-line-no">1199</span><span id="line-1199"> addListener(listDecommissionedRegionServers(), (decomServers, decomErr) -> {</span> |
| <span class="source-line-no">1200</span><span id="line-1200"> if (decomErr != null) {</span> |
| <span class="source-line-no">1201</span><span id="line-1201"> future.completeExceptionally(decomErr);</span> |
| <span class="source-line-no">1202</span><span id="line-1202"> } else {</span> |
| <span class="source-line-no">1203</span><span id="line-1203"> future.complete(allServers.stream().filter(s -> !decomServers.contains(s))</span> |
| <span class="source-line-no">1204</span><span id="line-1204"> .collect(ImmutableList.toImmutableList()));</span> |
| <span class="source-line-no">1205</span><span id="line-1205"> }</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"> });</span> |
| <span class="source-line-no">1210</span><span id="line-1210"> return future;</span> |
| <span class="source-line-no">1211</span><span id="line-1211"> }</span> |
| <span class="source-line-no">1212</span><span id="line-1212"></span> |
| <span class="source-line-no">1213</span><span id="line-1213"> /** Returns a list of master coprocessors wrapped by {@link CompletableFuture} */</span> |
| <span class="source-line-no">1214</span><span id="line-1214"> default CompletableFuture<List<String>> getMasterCoprocessorNames() {</span> |
| <span class="source-line-no">1215</span><span id="line-1215"> return getClusterMetrics(EnumSet.of(Option.MASTER_COPROCESSORS))</span> |
| <span class="source-line-no">1216</span><span id="line-1216"> .thenApply(ClusterMetrics::getMasterCoprocessorNames);</span> |
| <span class="source-line-no">1217</span><span id="line-1217"> }</span> |
| <span class="source-line-no">1218</span><span id="line-1218"></span> |
| <span class="source-line-no">1219</span><span id="line-1219"> /**</span> |
| <span class="source-line-no">1220</span><span id="line-1220"> * Get the info port of the current master if one is available.</span> |
| <span class="source-line-no">1221</span><span id="line-1221"> * @return master info port</span> |
| <span class="source-line-no">1222</span><span id="line-1222"> */</span> |
| <span class="source-line-no">1223</span><span id="line-1223"> default CompletableFuture<Integer> getMasterInfoPort() {</span> |
| <span class="source-line-no">1224</span><span id="line-1224"> return getClusterMetrics(EnumSet.of(Option.MASTER_INFO_PORT))</span> |
| <span class="source-line-no">1225</span><span id="line-1225"> .thenApply(ClusterMetrics::getMasterInfoPort);</span> |
| <span class="source-line-no">1226</span><span id="line-1226"> }</span> |
| <span class="source-line-no">1227</span><span id="line-1227"></span> |
| <span class="source-line-no">1228</span><span id="line-1228"> /**</span> |
| <span class="source-line-no">1229</span><span id="line-1229"> * Shuts down the HBase cluster.</span> |
| <span class="source-line-no">1230</span><span id="line-1230"> */</span> |
| <span class="source-line-no">1231</span><span id="line-1231"> CompletableFuture<Void> shutdown();</span> |
| <span class="source-line-no">1232</span><span id="line-1232"></span> |
| <span class="source-line-no">1233</span><span id="line-1233"> /**</span> |
| <span class="source-line-no">1234</span><span id="line-1234"> * Shuts down the current HBase master only.</span> |
| <span class="source-line-no">1235</span><span id="line-1235"> */</span> |
| <span class="source-line-no">1236</span><span id="line-1236"> CompletableFuture<Void> stopMaster();</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"> * Stop the designated regionserver.</span> |
| <span class="source-line-no">1240</span><span id="line-1240"> */</span> |
| <span class="source-line-no">1241</span><span id="line-1241"> CompletableFuture<Void> stopRegionServer(ServerName serverName);</span> |
| <span class="source-line-no">1242</span><span id="line-1242"></span> |
| <span class="source-line-no">1243</span><span id="line-1243"> /**</span> |
| <span class="source-line-no">1244</span><span id="line-1244"> * Update the configuration and trigger an online config change on the regionserver.</span> |
| <span class="source-line-no">1245</span><span id="line-1245"> * @param serverName : The server whose config needs to be updated.</span> |
| <span class="source-line-no">1246</span><span id="line-1246"> */</span> |
| <span class="source-line-no">1247</span><span id="line-1247"> CompletableFuture<Void> updateConfiguration(ServerName serverName);</span> |
| <span class="source-line-no">1248</span><span id="line-1248"></span> |
| <span class="source-line-no">1249</span><span id="line-1249"> /**</span> |
| <span class="source-line-no">1250</span><span id="line-1250"> * Update the configuration and trigger an online config change on all the masters and</span> |
| <span class="source-line-no">1251</span><span id="line-1251"> * regionservers.</span> |
| <span class="source-line-no">1252</span><span id="line-1252"> */</span> |
| <span class="source-line-no">1253</span><span id="line-1253"> CompletableFuture<Void> updateConfiguration();</span> |
| <span class="source-line-no">1254</span><span id="line-1254"></span> |
| <span class="source-line-no">1255</span><span id="line-1255"> /**</span> |
| <span class="source-line-no">1256</span><span id="line-1256"> * Update the configuration and trigger an online config change on all the regionservers in the</span> |
| <span class="source-line-no">1257</span><span id="line-1257"> * RSGroup.</span> |
| <span class="source-line-no">1258</span><span id="line-1258"> * @param groupName the group name</span> |
| <span class="source-line-no">1259</span><span id="line-1259"> */</span> |
| <span class="source-line-no">1260</span><span id="line-1260"> CompletableFuture<Void> updateConfiguration(String groupName);</span> |
| <span class="source-line-no">1261</span><span id="line-1261"></span> |
| <span class="source-line-no">1262</span><span id="line-1262"> /**</span> |
| <span class="source-line-no">1263</span><span id="line-1263"> * Roll the log writer. I.e. for filesystem based write ahead logs, start writing to a new file.</span> |
| <span class="source-line-no">1264</span><span id="line-1264"> * <p></span> |
| <span class="source-line-no">1265</span><span id="line-1265"> * When the returned CompletableFuture is done, it only means the rollWALWriter request was sent</span> |
| <span class="source-line-no">1266</span><span id="line-1266"> * to the region server and may need some time to finish the rollWALWriter operation. As a side</span> |
| <span class="source-line-no">1267</span><span id="line-1267"> * effect of this call, the named region server may schedule store flushes at the request of the</span> |
| <span class="source-line-no">1268</span><span id="line-1268"> * wal.</span> |
| <span class="source-line-no">1269</span><span id="line-1269"> * @param serverName The servername of the region server.</span> |
| <span class="source-line-no">1270</span><span id="line-1270"> */</span> |
| <span class="source-line-no">1271</span><span id="line-1271"> CompletableFuture<Void> rollWALWriter(ServerName serverName);</span> |
| <span class="source-line-no">1272</span><span id="line-1272"></span> |
| <span class="source-line-no">1273</span><span id="line-1273"> /**</span> |
| <span class="source-line-no">1274</span><span id="line-1274"> * Clear compacting queues on a region server.</span> |
| <span class="source-line-no">1275</span><span id="line-1275"> * @param serverName The servername of the region server.</span> |
| <span class="source-line-no">1276</span><span id="line-1276"> * @param queues the set of queue name</span> |
| <span class="source-line-no">1277</span><span id="line-1277"> */</span> |
| <span class="source-line-no">1278</span><span id="line-1278"> CompletableFuture<Void> clearCompactionQueues(ServerName serverName, Set<String> queues);</span> |
| <span class="source-line-no">1279</span><span id="line-1279"></span> |
| <span class="source-line-no">1280</span><span id="line-1280"> /**</span> |
| <span class="source-line-no">1281</span><span id="line-1281"> * Get a list of {@link RegionMetrics} of all regions hosted on a region server.</span> |
| <span class="source-line-no">1282</span><span id="line-1282"> * @return list of {@link RegionMetrics} wrapped by {@link CompletableFuture}</span> |
| <span class="source-line-no">1283</span><span id="line-1283"> */</span> |
| <span class="source-line-no">1284</span><span id="line-1284"> CompletableFuture<List<RegionMetrics>> getRegionMetrics(ServerName serverName);</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 list of {@link RegionMetrics} of all regions hosted on a region server for a table.</span> |
| <span class="source-line-no">1288</span><span id="line-1288"> * @return a list of {@link RegionMetrics} wrapped by {@link CompletableFuture}</span> |
| <span class="source-line-no">1289</span><span id="line-1289"> */</span> |
| <span class="source-line-no">1290</span><span id="line-1290"> CompletableFuture<List<RegionMetrics>> getRegionMetrics(ServerName serverName,</span> |
| <span class="source-line-no">1291</span><span id="line-1291"> TableName tableName);</span> |
| <span class="source-line-no">1292</span><span id="line-1292"></span> |
| <span class="source-line-no">1293</span><span id="line-1293"> /**</span> |
| <span class="source-line-no">1294</span><span id="line-1294"> * Check whether master is in maintenance mode</span> |
| <span class="source-line-no">1295</span><span id="line-1295"> * @return true if master is in maintenance mode, false otherwise. The return value will be</span> |
| <span class="source-line-no">1296</span><span id="line-1296"> * wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1297</span><span id="line-1297"> */</span> |
| <span class="source-line-no">1298</span><span id="line-1298"> CompletableFuture<Boolean> isMasterInMaintenanceMode();</span> |
| <span class="source-line-no">1299</span><span id="line-1299"></span> |
| <span class="source-line-no">1300</span><span id="line-1300"> /**</span> |
| <span class="source-line-no">1301</span><span id="line-1301"> * Get the current compaction state of a table. It could be in a major compaction, a minor</span> |
| <span class="source-line-no">1302</span><span id="line-1302"> * compaction, both, or none.</span> |
| <span class="source-line-no">1303</span><span id="line-1303"> * @param tableName table to examine</span> |
| <span class="source-line-no">1304</span><span id="line-1304"> * @return the current compaction state wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1305</span><span id="line-1305"> */</span> |
| <span class="source-line-no">1306</span><span id="line-1306"> default CompletableFuture<CompactionState> getCompactionState(TableName tableName) {</span> |
| <span class="source-line-no">1307</span><span id="line-1307"> return getCompactionState(tableName, CompactType.NORMAL);</span> |
| <span class="source-line-no">1308</span><span id="line-1308"> }</span> |
| <span class="source-line-no">1309</span><span id="line-1309"></span> |
| <span class="source-line-no">1310</span><span id="line-1310"> /**</span> |
| <span class="source-line-no">1311</span><span id="line-1311"> * Get the current compaction state of a table. It could be in a major compaction, a minor</span> |
| <span class="source-line-no">1312</span><span id="line-1312"> * compaction, both, or none.</span> |
| <span class="source-line-no">1313</span><span id="line-1313"> * @param tableName table to examine</span> |
| <span class="source-line-no">1314</span><span id="line-1314"> * @param compactType {@link org.apache.hadoop.hbase.client.CompactType}</span> |
| <span class="source-line-no">1315</span><span id="line-1315"> * @return the current compaction state wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1316</span><span id="line-1316"> */</span> |
| <span class="source-line-no">1317</span><span id="line-1317"> CompletableFuture<CompactionState> getCompactionState(TableName tableName,</span> |
| <span class="source-line-no">1318</span><span id="line-1318"> CompactType compactType);</span> |
| <span class="source-line-no">1319</span><span id="line-1319"></span> |
| <span class="source-line-no">1320</span><span id="line-1320"> /**</span> |
| <span class="source-line-no">1321</span><span id="line-1321"> * Get the current compaction state of region. It could be in a major compaction, a minor</span> |
| <span class="source-line-no">1322</span><span id="line-1322"> * compaction, both, or none.</span> |
| <span class="source-line-no">1323</span><span id="line-1323"> * @param regionName region to examine</span> |
| <span class="source-line-no">1324</span><span id="line-1324"> * @return the current compaction state wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1325</span><span id="line-1325"> */</span> |
| <span class="source-line-no">1326</span><span id="line-1326"> CompletableFuture<CompactionState> getCompactionStateForRegion(byte[] regionName);</span> |
| <span class="source-line-no">1327</span><span id="line-1327"></span> |
| <span class="source-line-no">1328</span><span id="line-1328"> /**</span> |
| <span class="source-line-no">1329</span><span id="line-1329"> * Get the timestamp of the last major compaction for the passed table.</span> |
| <span class="source-line-no">1330</span><span id="line-1330"> * <p></span> |
| <span class="source-line-no">1331</span><span id="line-1331"> * The timestamp of the oldest HFile resulting from a major compaction of that table, or not</span> |
| <span class="source-line-no">1332</span><span id="line-1332"> * present if no such HFile could be found.</span> |
| <span class="source-line-no">1333</span><span id="line-1333"> * @param tableName table to examine</span> |
| <span class="source-line-no">1334</span><span id="line-1334"> * @return the last major compaction timestamp wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1335</span><span id="line-1335"> */</span> |
| <span class="source-line-no">1336</span><span id="line-1336"> CompletableFuture<Optional<Long>> getLastMajorCompactionTimestamp(TableName tableName);</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 the timestamp of the last major compaction for the passed region.</span> |
| <span class="source-line-no">1340</span><span id="line-1340"> * <p></span> |
| <span class="source-line-no">1341</span><span id="line-1341"> * The timestamp of the oldest HFile resulting from a major compaction of that region, or not</span> |
| <span class="source-line-no">1342</span><span id="line-1342"> * present if no such HFile could be found.</span> |
| <span class="source-line-no">1343</span><span id="line-1343"> * @param regionName region to examine</span> |
| <span class="source-line-no">1344</span><span id="line-1344"> * @return the last major compaction timestamp wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1345</span><span id="line-1345"> */</span> |
| <span class="source-line-no">1346</span><span id="line-1346"> CompletableFuture<Optional<Long>> getLastMajorCompactionTimestampForRegion(byte[] regionName);</span> |
| <span class="source-line-no">1347</span><span id="line-1347"></span> |
| <span class="source-line-no">1348</span><span id="line-1348"> /**</span> |
| <span class="source-line-no">1349</span><span id="line-1349"> * Returns the list of supported security capabilities. The return value will be wrapped by a</span> |
| <span class="source-line-no">1350</span><span id="line-1350"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">1351</span><span id="line-1351"> */</span> |
| <span class="source-line-no">1352</span><span id="line-1352"> CompletableFuture<List<SecurityCapability>> getSecurityCapabilities();</span> |
| <span class="source-line-no">1353</span><span id="line-1353"></span> |
| <span class="source-line-no">1354</span><span id="line-1354"> /**</span> |
| <span class="source-line-no">1355</span><span id="line-1355"> * Turn the load balancer on or off.</span> |
| <span class="source-line-no">1356</span><span id="line-1356"> * @param on Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">1357</span><span id="line-1357"> * @return Previous balancer value wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1358</span><span id="line-1358"> */</span> |
| <span class="source-line-no">1359</span><span id="line-1359"> default CompletableFuture<Boolean> balancerSwitch(boolean on) {</span> |
| <span class="source-line-no">1360</span><span id="line-1360"> return balancerSwitch(on, false);</span> |
| <span class="source-line-no">1361</span><span id="line-1361"> }</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"> * Turn the load balancer on or off.</span> |
| <span class="source-line-no">1365</span><span id="line-1365"> * <p/></span> |
| <span class="source-line-no">1366</span><span id="line-1366"> * Notice that, the method itself is always non-blocking, which means it will always return</span> |
| <span class="source-line-no">1367</span><span id="line-1367"> * immediately. The {@code drainRITs} parameter only effects when will we complete the returned</span> |
| <span class="source-line-no">1368</span><span id="line-1368"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">1369</span><span id="line-1369"> * @param on Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">1370</span><span id="line-1370"> * @param drainRITs If <code>true</code>, it waits until current balance() call, if outstanding,</span> |
| <span class="source-line-no">1371</span><span id="line-1371"> * to return.</span> |
| <span class="source-line-no">1372</span><span id="line-1372"> * @return Previous balancer value wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1373</span><span id="line-1373"> */</span> |
| <span class="source-line-no">1374</span><span id="line-1374"> CompletableFuture<Boolean> balancerSwitch(boolean on, boolean drainRITs);</span> |
| <span class="source-line-no">1375</span><span id="line-1375"></span> |
| <span class="source-line-no">1376</span><span id="line-1376"> /**</span> |
| <span class="source-line-no">1377</span><span id="line-1377"> * 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">1378</span><span id="line-1378"> * reassignments. Can NOT run for various reasons. Check logs.</span> |
| <span class="source-line-no">1379</span><span id="line-1379"> * @return True if balancer ran, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">1380</span><span id="line-1380"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">1381</span><span id="line-1381"> */</span> |
| <span class="source-line-no">1382</span><span id="line-1382"> default CompletableFuture<Boolean> balance() {</span> |
| <span class="source-line-no">1383</span><span id="line-1383"> return balance(BalanceRequest.defaultInstance()).thenApply(BalanceResponse::isBalancerRan);</span> |
| <span class="source-line-no">1384</span><span id="line-1384"> }</span> |
| <span class="source-line-no">1385</span><span id="line-1385"></span> |
| <span class="source-line-no">1386</span><span id="line-1386"> /**</span> |
| <span class="source-line-no">1387</span><span id="line-1387"> * 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">1388</span><span id="line-1388"> * reassignments. If there is region in transition, force parameter of true would still run</span> |
| <span class="source-line-no">1389</span><span id="line-1389"> * balancer. Can *not* run for other reasons. Check logs.</span> |
| <span class="source-line-no">1390</span><span id="line-1390"> * @param forcible whether we should force balance even if there is region in transition.</span> |
| <span class="source-line-no">1391</span><span id="line-1391"> * @return True if balancer ran, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">1392</span><span id="line-1392"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">1393</span><span id="line-1393"> * @deprecated Since 2.5.0. Will be removed in 4.0.0. Use {@link #balance(BalanceRequest)}</span> |
| <span class="source-line-no">1394</span><span id="line-1394"> * instead.</span> |
| <span class="source-line-no">1395</span><span id="line-1395"> */</span> |
| <span class="source-line-no">1396</span><span id="line-1396"> @Deprecated</span> |
| <span class="source-line-no">1397</span><span id="line-1397"> default CompletableFuture<Boolean> balance(boolean forcible) {</span> |
| <span class="source-line-no">1398</span><span id="line-1398"> return balance(BalanceRequest.newBuilder().setIgnoreRegionsInTransition(forcible).build())</span> |
| <span class="source-line-no">1399</span><span id="line-1399"> .thenApply(BalanceResponse::isBalancerRan);</span> |
| <span class="source-line-no">1400</span><span id="line-1400"> }</span> |
| <span class="source-line-no">1401</span><span id="line-1401"></span> |
| <span class="source-line-no">1402</span><span id="line-1402"> /**</span> |
| <span class="source-line-no">1403</span><span id="line-1403"> * Invoke the balancer with the given balance request. The BalanceRequest defines how the balancer</span> |
| <span class="source-line-no">1404</span><span id="line-1404"> * will run. See {@link BalanceRequest} for more details.</span> |
| <span class="source-line-no">1405</span><span id="line-1405"> * @param request defines how the balancer should run</span> |
| <span class="source-line-no">1406</span><span id="line-1406"> * @return {@link BalanceResponse} with details about the results of the invocation.</span> |
| <span class="source-line-no">1407</span><span id="line-1407"> */</span> |
| <span class="source-line-no">1408</span><span id="line-1408"> CompletableFuture<BalanceResponse> balance(BalanceRequest request);</span> |
| <span class="source-line-no">1409</span><span id="line-1409"></span> |
| <span class="source-line-no">1410</span><span id="line-1410"> /**</span> |
| <span class="source-line-no">1411</span><span id="line-1411"> * Query the current state of the balancer.</span> |
| <span class="source-line-no">1412</span><span id="line-1412"> * @return true if the balance switch is on, false otherwise. The return value will be wrapped by</span> |
| <span class="source-line-no">1413</span><span id="line-1413"> * a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1414</span><span id="line-1414"> */</span> |
| <span class="source-line-no">1415</span><span id="line-1415"> CompletableFuture<Boolean> isBalancerEnabled();</span> |
| <span class="source-line-no">1416</span><span id="line-1416"></span> |
| <span class="source-line-no">1417</span><span id="line-1417"> /**</span> |
| <span class="source-line-no">1418</span><span id="line-1418"> * Set region normalizer on/off.</span> |
| <span class="source-line-no">1419</span><span id="line-1419"> * @param on whether normalizer should be on or off</span> |
| <span class="source-line-no">1420</span><span id="line-1420"> * @return Previous normalizer value wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1421</span><span id="line-1421"> */</span> |
| <span class="source-line-no">1422</span><span id="line-1422"> CompletableFuture<Boolean> normalizerSwitch(boolean on);</span> |
| <span class="source-line-no">1423</span><span id="line-1423"></span> |
| <span class="source-line-no">1424</span><span id="line-1424"> /**</span> |
| <span class="source-line-no">1425</span><span id="line-1425"> * Query the current state of the region normalizer</span> |
| <span class="source-line-no">1426</span><span id="line-1426"> * @return true if region normalizer is on, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">1427</span><span id="line-1427"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1428</span><span id="line-1428"> */</span> |
| <span class="source-line-no">1429</span><span id="line-1429"> CompletableFuture<Boolean> isNormalizerEnabled();</span> |
| <span class="source-line-no">1430</span><span id="line-1430"></span> |
| <span class="source-line-no">1431</span><span id="line-1431"> /**</span> |
| <span class="source-line-no">1432</span><span id="line-1432"> * Invoke region normalizer. Can NOT run for various reasons. Check logs.</span> |
| <span class="source-line-no">1433</span><span id="line-1433"> * @return true if region normalizer ran, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">1434</span><span id="line-1434"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1435</span><span id="line-1435"> */</span> |
| <span class="source-line-no">1436</span><span id="line-1436"> default CompletableFuture<Boolean> normalize() {</span> |
| <span class="source-line-no">1437</span><span id="line-1437"> return normalize(new NormalizeTableFilterParams.Builder().build());</span> |
| <span class="source-line-no">1438</span><span id="line-1438"> }</span> |
| <span class="source-line-no">1439</span><span id="line-1439"></span> |
| <span class="source-line-no">1440</span><span id="line-1440"> /**</span> |
| <span class="source-line-no">1441</span><span id="line-1441"> * Invoke region normalizer. Can NOT run for various reasons. Check logs.</span> |
| <span class="source-line-no">1442</span><span id="line-1442"> * @param ntfp limit to tables matching the specified filter.</span> |
| <span class="source-line-no">1443</span><span id="line-1443"> * @return true if region normalizer ran, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">1444</span><span id="line-1444"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1445</span><span id="line-1445"> */</span> |
| <span class="source-line-no">1446</span><span id="line-1446"> CompletableFuture<Boolean> normalize(NormalizeTableFilterParams ntfp);</span> |
| <span class="source-line-no">1447</span><span id="line-1447"></span> |
| <span class="source-line-no">1448</span><span id="line-1448"> /**</span> |
| <span class="source-line-no">1449</span><span id="line-1449"> * Turn the cleaner chore on/off.</span> |
| <span class="source-line-no">1450</span><span id="line-1450"> * @return Previous cleaner state wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1451</span><span id="line-1451"> */</span> |
| <span class="source-line-no">1452</span><span id="line-1452"> CompletableFuture<Boolean> cleanerChoreSwitch(boolean on);</span> |
| <span class="source-line-no">1453</span><span id="line-1453"></span> |
| <span class="source-line-no">1454</span><span id="line-1454"> /**</span> |
| <span class="source-line-no">1455</span><span id="line-1455"> * Query the current state of the cleaner chore.</span> |
| <span class="source-line-no">1456</span><span id="line-1456"> * @return true if cleaner chore is on, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">1457</span><span id="line-1457"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1458</span><span id="line-1458"> */</span> |
| <span class="source-line-no">1459</span><span id="line-1459"> CompletableFuture<Boolean> isCleanerChoreEnabled();</span> |
| <span class="source-line-no">1460</span><span id="line-1460"></span> |
| <span class="source-line-no">1461</span><span id="line-1461"> /**</span> |
| <span class="source-line-no">1462</span><span id="line-1462"> * Ask for cleaner chore to run.</span> |
| <span class="source-line-no">1463</span><span id="line-1463"> * @return true if cleaner chore ran, false otherwise. The return value will be wrapped by a</span> |
| <span class="source-line-no">1464</span><span id="line-1464"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1465</span><span id="line-1465"> */</span> |
| <span class="source-line-no">1466</span><span id="line-1466"> CompletableFuture<Boolean> runCleanerChore();</span> |
| <span class="source-line-no">1467</span><span id="line-1467"></span> |
| <span class="source-line-no">1468</span><span id="line-1468"> /**</span> |
| <span class="source-line-no">1469</span><span id="line-1469"> * Turn the catalog janitor on/off.</span> |
| <span class="source-line-no">1470</span><span id="line-1470"> * @return the previous state wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1471</span><span id="line-1471"> */</span> |
| <span class="source-line-no">1472</span><span id="line-1472"> CompletableFuture<Boolean> catalogJanitorSwitch(boolean on);</span> |
| <span class="source-line-no">1473</span><span id="line-1473"></span> |
| <span class="source-line-no">1474</span><span id="line-1474"> /**</span> |
| <span class="source-line-no">1475</span><span id="line-1475"> * Query on the catalog janitor state.</span> |
| <span class="source-line-no">1476</span><span id="line-1476"> * @return true if the catalog janitor is on, false otherwise. The return value will be wrapped by</span> |
| <span class="source-line-no">1477</span><span id="line-1477"> * a {@link CompletableFuture}</span> |
| <span class="source-line-no">1478</span><span id="line-1478"> */</span> |
| <span class="source-line-no">1479</span><span id="line-1479"> CompletableFuture<Boolean> isCatalogJanitorEnabled();</span> |
| <span class="source-line-no">1480</span><span id="line-1480"></span> |
| <span class="source-line-no">1481</span><span id="line-1481"> /**</span> |
| <span class="source-line-no">1482</span><span id="line-1482"> * Ask for a scan of the catalog table.</span> |
| <span class="source-line-no">1483</span><span id="line-1483"> * @return the number of entries cleaned. The return value will be wrapped by a</span> |
| <span class="source-line-no">1484</span><span id="line-1484"> * {@link CompletableFuture}</span> |
| <span class="source-line-no">1485</span><span id="line-1485"> */</span> |
| <span class="source-line-no">1486</span><span id="line-1486"> CompletableFuture<Integer> runCatalogJanitor();</span> |
| <span class="source-line-no">1487</span><span id="line-1487"></span> |
| <span class="source-line-no">1488</span><span id="line-1488"> /**</span> |
| <span class="source-line-no">1489</span><span id="line-1489"> * Execute the given coprocessor call on the master.</span> |
| <span class="source-line-no">1490</span><span id="line-1490"> * <p></span> |
| <span class="source-line-no">1491</span><span id="line-1491"> * The {@code stubMaker} is just a delegation to the {@code newStub} call. Usually it is only a</span> |
| <span class="source-line-no">1492</span><span id="line-1492"> * one line lambda expression, like:</span> |
| <span class="source-line-no">1493</span><span id="line-1493"> *</span> |
| <span class="source-line-no">1494</span><span id="line-1494"> * <pre></span> |
| <span class="source-line-no">1495</span><span id="line-1495"> * channel -&gt; xxxService.newStub(channel)</span> |
| <span class="source-line-no">1496</span><span id="line-1496"> * </pre></span> |
| <span class="source-line-no">1497</span><span id="line-1497"> *</span> |
| <span class="source-line-no">1498</span><span id="line-1498"> * @param stubMaker a delegation to the actual {@code newStub} call.</span> |
| <span class="source-line-no">1499</span><span id="line-1499"> * @param callable a delegation to the actual protobuf rpc call. See the comment of</span> |
| <span class="source-line-no">1500</span><span id="line-1500"> * {@link ServiceCaller} for more details.</span> |
| <span class="source-line-no">1501</span><span id="line-1501"> * @param <S> the type of the asynchronous stub</span> |
| <span class="source-line-no">1502</span><span id="line-1502"> * @param <R> the type of the return value</span> |
| <span class="source-line-no">1503</span><span id="line-1503"> * @return the return value of the protobuf rpc call, wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1504</span><span id="line-1504"> * @see ServiceCaller</span> |
| <span class="source-line-no">1505</span><span id="line-1505"> */</span> |
| <span class="source-line-no">1506</span><span id="line-1506"> <S, R> CompletableFuture<R> coprocessorService(Function<RpcChannel, S> stubMaker,</span> |
| <span class="source-line-no">1507</span><span id="line-1507"> ServiceCaller<S, R> callable);</span> |
| <span class="source-line-no">1508</span><span id="line-1508"></span> |
| <span class="source-line-no">1509</span><span id="line-1509"> /**</span> |
| <span class="source-line-no">1510</span><span id="line-1510"> * Execute the given coprocessor call on the given region server.</span> |
| <span class="source-line-no">1511</span><span id="line-1511"> * <p></span> |
| <span class="source-line-no">1512</span><span id="line-1512"> * The {@code stubMaker} is just a delegation to the {@code newStub} call. Usually it is only a</span> |
| <span class="source-line-no">1513</span><span id="line-1513"> * one line lambda expression, like:</span> |
| <span class="source-line-no">1514</span><span id="line-1514"> *</span> |
| <span class="source-line-no">1515</span><span id="line-1515"> * <pre></span> |
| <span class="source-line-no">1516</span><span id="line-1516"> * channel -&gt; xxxService.newStub(channel)</span> |
| <span class="source-line-no">1517</span><span id="line-1517"> * </pre></span> |
| <span class="source-line-no">1518</span><span id="line-1518"> *</span> |
| <span class="source-line-no">1519</span><span id="line-1519"> * @param stubMaker a delegation to the actual {@code newStub} call.</span> |
| <span class="source-line-no">1520</span><span id="line-1520"> * @param callable a delegation to the actual protobuf rpc call. See the comment of</span> |
| <span class="source-line-no">1521</span><span id="line-1521"> * {@link ServiceCaller} for more details.</span> |
| <span class="source-line-no">1522</span><span id="line-1522"> * @param serverName the given region server</span> |
| <span class="source-line-no">1523</span><span id="line-1523"> * @param <S> the type of the asynchronous stub</span> |
| <span class="source-line-no">1524</span><span id="line-1524"> * @param <R> the type of the return value</span> |
| <span class="source-line-no">1525</span><span id="line-1525"> * @return the return value of the protobuf rpc call, wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1526</span><span id="line-1526"> * @see ServiceCaller</span> |
| <span class="source-line-no">1527</span><span id="line-1527"> */</span> |
| <span class="source-line-no">1528</span><span id="line-1528"> <S, R> CompletableFuture<R> coprocessorService(Function<RpcChannel, S> stubMaker,</span> |
| <span class="source-line-no">1529</span><span id="line-1529"> ServiceCaller<S, R> callable, ServerName serverName);</span> |
| <span class="source-line-no">1530</span><span id="line-1530"></span> |
| <span class="source-line-no">1531</span><span id="line-1531"> /**</span> |
| <span class="source-line-no">1532</span><span id="line-1532"> * List all the dead region servers.</span> |
| <span class="source-line-no">1533</span><span id="line-1533"> */</span> |
| <span class="source-line-no">1534</span><span id="line-1534"> default CompletableFuture<List<ServerName>> listDeadServers() {</span> |
| <span class="source-line-no">1535</span><span id="line-1535"> return this.getClusterMetrics(EnumSet.of(Option.DEAD_SERVERS))</span> |
| <span class="source-line-no">1536</span><span id="line-1536"> .thenApply(ClusterMetrics::getDeadServerNames);</span> |
| <span class="source-line-no">1537</span><span id="line-1537"> }</span> |
| <span class="source-line-no">1538</span><span id="line-1538"></span> |
| <span class="source-line-no">1539</span><span id="line-1539"> /**</span> |
| <span class="source-line-no">1540</span><span id="line-1540"> * List all the unknown region servers.</span> |
| <span class="source-line-no">1541</span><span id="line-1541"> */</span> |
| <span class="source-line-no">1542</span><span id="line-1542"> default CompletableFuture<List<ServerName>> listUnknownServers() {</span> |
| <span class="source-line-no">1543</span><span id="line-1543"> return this.getClusterMetrics(EnumSet.of(Option.UNKNOWN_SERVERS))</span> |
| <span class="source-line-no">1544</span><span id="line-1544"> .thenApply(ClusterMetrics::getUnknownServerNames);</span> |
| <span class="source-line-no">1545</span><span id="line-1545"> }</span> |
| <span class="source-line-no">1546</span><span id="line-1546"></span> |
| <span class="source-line-no">1547</span><span id="line-1547"> /**</span> |
| <span class="source-line-no">1548</span><span id="line-1548"> * Clear dead region servers from master.</span> |
| <span class="source-line-no">1549</span><span id="line-1549"> * @param servers list of dead region servers.</span> |
| <span class="source-line-no">1550</span><span id="line-1550"> * @return - returns a list of servers that not cleared wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1551</span><span id="line-1551"> */</span> |
| <span class="source-line-no">1552</span><span id="line-1552"> CompletableFuture<List<ServerName>> clearDeadServers(final List<ServerName> servers);</span> |
| <span class="source-line-no">1553</span><span id="line-1553"></span> |
| <span class="source-line-no">1554</span><span id="line-1554"> /**</span> |
| <span class="source-line-no">1555</span><span id="line-1555"> * Clear all the blocks corresponding to this table from BlockCache. For expert-admins. Calling</span> |
| <span class="source-line-no">1556</span><span id="line-1556"> * this API will drop all the cached blocks specific to a table from BlockCache. This can</span> |
| <span class="source-line-no">1557</span><span id="line-1557"> * significantly impact the query performance as the subsequent queries will have to retrieve the</span> |
| <span class="source-line-no">1558</span><span id="line-1558"> * blocks from underlying filesystem.</span> |
| <span class="source-line-no">1559</span><span id="line-1559"> * @param tableName table to clear block cache</span> |
| <span class="source-line-no">1560</span><span id="line-1560"> * @return CacheEvictionStats related to the eviction wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1561</span><span id="line-1561"> */</span> |
| <span class="source-line-no">1562</span><span id="line-1562"> CompletableFuture<CacheEvictionStats> clearBlockCache(final TableName tableName);</span> |
| <span class="source-line-no">1563</span><span id="line-1563"></span> |
| <span class="source-line-no">1564</span><span id="line-1564"> /**</span> |
| <span class="source-line-no">1565</span><span id="line-1565"> * Create a new table by cloning the existent table schema.</span> |
| <span class="source-line-no">1566</span><span id="line-1566"> * @param tableName name of the table to be cloned</span> |
| <span class="source-line-no">1567</span><span id="line-1567"> * @param newTableName name of the new table where the table will be created</span> |
| <span class="source-line-no">1568</span><span id="line-1568"> * @param preserveSplits True if the splits should be preserved</span> |
| <span class="source-line-no">1569</span><span id="line-1569"> */</span> |
| <span class="source-line-no">1570</span><span id="line-1570"> CompletableFuture<Void> cloneTableSchema(final TableName tableName, final TableName newTableName,</span> |
| <span class="source-line-no">1571</span><span id="line-1571"> final boolean preserveSplits);</span> |
| <span class="source-line-no">1572</span><span id="line-1572"></span> |
| <span class="source-line-no">1573</span><span id="line-1573"> /**</span> |
| <span class="source-line-no">1574</span><span id="line-1574"> * Turn the compaction on or off. Disabling compactions will also interrupt any currently ongoing</span> |
| <span class="source-line-no">1575</span><span id="line-1575"> * compactions. This state is ephemeral. The setting will be lost on restart. Compaction can also</span> |
| <span class="source-line-no">1576</span><span id="line-1576"> * be enabled/disabled by modifying configuration hbase.regionserver.compaction.enabled in</span> |
| <span class="source-line-no">1577</span><span id="line-1577"> * hbase-site.xml.</span> |
| <span class="source-line-no">1578</span><span id="line-1578"> * @param switchState Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">1579</span><span id="line-1579"> * @param serverNamesList list of region servers.</span> |
| <span class="source-line-no">1580</span><span id="line-1580"> * @return Previous compaction states for region servers</span> |
| <span class="source-line-no">1581</span><span id="line-1581"> */</span> |
| <span class="source-line-no">1582</span><span id="line-1582"> CompletableFuture<Map<ServerName, Boolean>> compactionSwitch(boolean switchState,</span> |
| <span class="source-line-no">1583</span><span id="line-1583"> List<String> serverNamesList);</span> |
| <span class="source-line-no">1584</span><span id="line-1584"></span> |
| <span class="source-line-no">1585</span><span id="line-1585"> /**</span> |
| <span class="source-line-no">1586</span><span id="line-1586"> * Switch the rpc throttle enabled state.</span> |
| <span class="source-line-no">1587</span><span id="line-1587"> * @param enable Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">1588</span><span id="line-1588"> * @return Previous rpc throttle enabled value</span> |
| <span class="source-line-no">1589</span><span id="line-1589"> */</span> |
| <span class="source-line-no">1590</span><span id="line-1590"> CompletableFuture<Boolean> switchRpcThrottle(boolean enable);</span> |
| <span class="source-line-no">1591</span><span id="line-1591"></span> |
| <span class="source-line-no">1592</span><span id="line-1592"> /**</span> |
| <span class="source-line-no">1593</span><span id="line-1593"> * Get if the rpc throttle is enabled.</span> |
| <span class="source-line-no">1594</span><span id="line-1594"> * @return True if rpc throttle is enabled</span> |
| <span class="source-line-no">1595</span><span id="line-1595"> */</span> |
| <span class="source-line-no">1596</span><span id="line-1596"> CompletableFuture<Boolean> isRpcThrottleEnabled();</span> |
| <span class="source-line-no">1597</span><span id="line-1597"></span> |
| <span class="source-line-no">1598</span><span id="line-1598"> /**</span> |
| <span class="source-line-no">1599</span><span id="line-1599"> * Switch the exceed throttle quota. If enabled, user/table/namespace throttle quota can be</span> |
| <span class="source-line-no">1600</span><span id="line-1600"> * exceeded if region server has availble quota.</span> |
| <span class="source-line-no">1601</span><span id="line-1601"> * @param enable Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">1602</span><span id="line-1602"> * @return Previous exceed throttle enabled value</span> |
| <span class="source-line-no">1603</span><span id="line-1603"> */</span> |
| <span class="source-line-no">1604</span><span id="line-1604"> CompletableFuture<Boolean> exceedThrottleQuotaSwitch(boolean enable);</span> |
| <span class="source-line-no">1605</span><span id="line-1605"></span> |
| <span class="source-line-no">1606</span><span id="line-1606"> /**</span> |
| <span class="source-line-no">1607</span><span id="line-1607"> * Fetches the table sizes on the filesystem as tracked by the HBase Master.</span> |
| <span class="source-line-no">1608</span><span id="line-1608"> */</span> |
| <span class="source-line-no">1609</span><span id="line-1609"> CompletableFuture<Map<TableName, Long>> getSpaceQuotaTableSizes();</span> |
| <span class="source-line-no">1610</span><span id="line-1610"></span> |
| <span class="source-line-no">1611</span><span id="line-1611"> /**</span> |
| <span class="source-line-no">1612</span><span id="line-1612"> * Fetches the observed {@link SpaceQuotaSnapshotView}s observed by a RegionServer.</span> |
| <span class="source-line-no">1613</span><span id="line-1613"> */</span> |
| <span class="source-line-no">1614</span><span id="line-1614"> CompletableFuture<? extends Map<TableName, ? extends SpaceQuotaSnapshotView>></span> |
| <span class="source-line-no">1615</span><span id="line-1615"> getRegionServerSpaceQuotaSnapshots(ServerName serverName);</span> |
| <span class="source-line-no">1616</span><span id="line-1616"></span> |
| <span class="source-line-no">1617</span><span id="line-1617"> /**</span> |
| <span class="source-line-no">1618</span><span id="line-1618"> * 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">1619</span><span id="line-1619"> * no quota information on that namespace.</span> |
| <span class="source-line-no">1620</span><span id="line-1620"> */</span> |
| <span class="source-line-no">1621</span><span id="line-1621"> CompletableFuture<? extends SpaceQuotaSnapshotView></span> |
| <span class="source-line-no">1622</span><span id="line-1622"> getCurrentSpaceQuotaSnapshot(String namespace);</span> |
| <span class="source-line-no">1623</span><span id="line-1623"></span> |
| <span class="source-line-no">1624</span><span id="line-1624"> /**</span> |
| <span class="source-line-no">1625</span><span id="line-1625"> * 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">1626</span><span id="line-1626"> * no quota information on that table.</span> |
| <span class="source-line-no">1627</span><span id="line-1627"> */</span> |
| <span class="source-line-no">1628</span><span id="line-1628"> CompletableFuture<? extends SpaceQuotaSnapshotView></span> |
| <span class="source-line-no">1629</span><span id="line-1629"> getCurrentSpaceQuotaSnapshot(TableName tableName);</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"> * Grants user specific permissions</span> |
| <span class="source-line-no">1633</span><span id="line-1633"> * @param userPermission user name and the specific permission</span> |
| <span class="source-line-no">1634</span><span id="line-1634"> * @param mergeExistingPermissions If set to false, later granted permissions will override</span> |
| <span class="source-line-no">1635</span><span id="line-1635"> * previous granted permissions. otherwise, it'll merge with</span> |
| <span class="source-line-no">1636</span><span id="line-1636"> * previous granted permissions.</span> |
| <span class="source-line-no">1637</span><span id="line-1637"> */</span> |
| <span class="source-line-no">1638</span><span id="line-1638"> CompletableFuture<Void> grant(UserPermission userPermission, boolean mergeExistingPermissions);</span> |
| <span class="source-line-no">1639</span><span id="line-1639"></span> |
| <span class="source-line-no">1640</span><span id="line-1640"> /**</span> |
| <span class="source-line-no">1641</span><span id="line-1641"> * Revokes user specific permissions</span> |
| <span class="source-line-no">1642</span><span id="line-1642"> * @param userPermission user name and the specific permission</span> |
| <span class="source-line-no">1643</span><span id="line-1643"> */</span> |
| <span class="source-line-no">1644</span><span id="line-1644"> CompletableFuture<Void> revoke(UserPermission userPermission);</span> |
| <span class="source-line-no">1645</span><span id="line-1645"></span> |
| <span class="source-line-no">1646</span><span id="line-1646"> /**</span> |
| <span class="source-line-no">1647</span><span id="line-1647"> * Get the global/namespace/table permissions for user</span> |
| <span class="source-line-no">1648</span><span id="line-1648"> * @param getUserPermissionsRequest A request contains which user, global, namespace or table</span> |
| <span class="source-line-no">1649</span><span id="line-1649"> * permissions needed</span> |
| <span class="source-line-no">1650</span><span id="line-1650"> * @return The user and permission list</span> |
| <span class="source-line-no">1651</span><span id="line-1651"> */</span> |
| <span class="source-line-no">1652</span><span id="line-1652"> CompletableFuture<List<UserPermission>></span> |
| <span class="source-line-no">1653</span><span id="line-1653"> getUserPermissions(GetUserPermissionsRequest getUserPermissionsRequest);</span> |
| <span class="source-line-no">1654</span><span id="line-1654"></span> |
| <span class="source-line-no">1655</span><span id="line-1655"> /**</span> |
| <span class="source-line-no">1656</span><span id="line-1656"> * Check if the user has specific permissions</span> |
| <span class="source-line-no">1657</span><span id="line-1657"> * @param userName the user name</span> |
| <span class="source-line-no">1658</span><span id="line-1658"> * @param permissions the specific permission list</span> |
| <span class="source-line-no">1659</span><span id="line-1659"> * @return True if user has the specific permissions</span> |
| <span class="source-line-no">1660</span><span id="line-1660"> */</span> |
| <span class="source-line-no">1661</span><span id="line-1661"> CompletableFuture<List<Boolean>> hasUserPermissions(String userName,</span> |
| <span class="source-line-no">1662</span><span id="line-1662"> List<Permission> permissions);</span> |
| <span class="source-line-no">1663</span><span id="line-1663"></span> |
| <span class="source-line-no">1664</span><span id="line-1664"> /**</span> |
| <span class="source-line-no">1665</span><span id="line-1665"> * Check if call user has specific permissions</span> |
| <span class="source-line-no">1666</span><span id="line-1666"> * @param permissions the specific permission list</span> |
| <span class="source-line-no">1667</span><span id="line-1667"> * @return True if user has the specific permissions</span> |
| <span class="source-line-no">1668</span><span id="line-1668"> */</span> |
| <span class="source-line-no">1669</span><span id="line-1669"> default CompletableFuture<List<Boolean>> hasUserPermissions(List<Permission> permissions) {</span> |
| <span class="source-line-no">1670</span><span id="line-1670"> return hasUserPermissions(null, permissions);</span> |
| <span class="source-line-no">1671</span><span id="line-1671"> }</span> |
| <span class="source-line-no">1672</span><span id="line-1672"></span> |
| <span class="source-line-no">1673</span><span id="line-1673"> /**</span> |
| <span class="source-line-no">1674</span><span id="line-1674"> * Turn on or off the auto snapshot cleanup based on TTL.</span> |
| <span class="source-line-no">1675</span><span id="line-1675"> * <p/></span> |
| <span class="source-line-no">1676</span><span id="line-1676"> * Notice that, the method itself is always non-blocking, which means it will always return</span> |
| <span class="source-line-no">1677</span><span id="line-1677"> * immediately. The {@code sync} parameter only effects when will we complete the returned</span> |
| <span class="source-line-no">1678</span><span id="line-1678"> * {@link CompletableFuture}.</span> |
| <span class="source-line-no">1679</span><span id="line-1679"> * @param on Set to <code>true</code> to enable, <code>false</code> to disable.</span> |
| <span class="source-line-no">1680</span><span id="line-1680"> * @param sync If <code>true</code>, it waits until current snapshot cleanup is completed, if</span> |
| <span class="source-line-no">1681</span><span id="line-1681"> * outstanding.</span> |
| <span class="source-line-no">1682</span><span id="line-1682"> * @return Previous auto snapshot cleanup value wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1683</span><span id="line-1683"> */</span> |
| <span class="source-line-no">1684</span><span id="line-1684"> CompletableFuture<Boolean> snapshotCleanupSwitch(boolean on, boolean sync);</span> |
| <span class="source-line-no">1685</span><span id="line-1685"></span> |
| <span class="source-line-no">1686</span><span id="line-1686"> /**</span> |
| <span class="source-line-no">1687</span><span id="line-1687"> * Query the current state of the auto snapshot cleanup based on TTL.</span> |
| <span class="source-line-no">1688</span><span id="line-1688"> * @return true if the auto snapshot cleanup is enabled, false otherwise. The return value will be</span> |
| <span class="source-line-no">1689</span><span id="line-1689"> * wrapped by a {@link CompletableFuture}.</span> |
| <span class="source-line-no">1690</span><span id="line-1690"> */</span> |
| <span class="source-line-no">1691</span><span id="line-1691"> CompletableFuture<Boolean> isSnapshotCleanupEnabled();</span> |
| <span class="source-line-no">1692</span><span id="line-1692"></span> |
| <span class="source-line-no">1693</span><span id="line-1693"> /**</span> |
| <span class="source-line-no">1694</span><span id="line-1694"> * Retrieves online slow RPC logs from the provided list of RegionServers</span> |
| <span class="source-line-no">1695</span><span id="line-1695"> * @param serverNames Server names to get slowlog responses from</span> |
| <span class="source-line-no">1696</span><span id="line-1696"> * @param logQueryFilter filter to be used if provided</span> |
| <span class="source-line-no">1697</span><span id="line-1697"> * @return Online slowlog response list. The return value wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1698</span><span id="line-1698"> * @deprecated since 2.4.0 and will be removed in 4.0.0. Use</span> |
| <span class="source-line-no">1699</span><span id="line-1699"> * {@link #getLogEntries(Set, String, ServerType, int, Map)} instead.</span> |
| <span class="source-line-no">1700</span><span id="line-1700"> */</span> |
| <span class="source-line-no">1701</span><span id="line-1701"> @Deprecated</span> |
| <span class="source-line-no">1702</span><span id="line-1702"> default CompletableFuture<List<OnlineLogRecord>></span> |
| <span class="source-line-no">1703</span><span id="line-1703"> getSlowLogResponses(final Set<ServerName> serverNames, final LogQueryFilter logQueryFilter) {</span> |
| <span class="source-line-no">1704</span><span id="line-1704"> String logType;</span> |
| <span class="source-line-no">1705</span><span id="line-1705"> if (LogQueryFilter.Type.LARGE_LOG.equals(logQueryFilter.getType())) {</span> |
| <span class="source-line-no">1706</span><span id="line-1706"> logType = "LARGE_LOG";</span> |
| <span class="source-line-no">1707</span><span id="line-1707"> } else {</span> |
| <span class="source-line-no">1708</span><span id="line-1708"> logType = "SLOW_LOG";</span> |
| <span class="source-line-no">1709</span><span id="line-1709"> }</span> |
| <span class="source-line-no">1710</span><span id="line-1710"> Map<String, Object> filterParams = new HashMap<>();</span> |
| <span class="source-line-no">1711</span><span id="line-1711"> filterParams.put("regionName", logQueryFilter.getRegionName());</span> |
| <span class="source-line-no">1712</span><span id="line-1712"> filterParams.put("clientAddress", logQueryFilter.getClientAddress());</span> |
| <span class="source-line-no">1713</span><span id="line-1713"> filterParams.put("tableName", logQueryFilter.getTableName());</span> |
| <span class="source-line-no">1714</span><span id="line-1714"> filterParams.put("userName", logQueryFilter.getUserName());</span> |
| <span class="source-line-no">1715</span><span id="line-1715"> filterParams.put("filterByOperator", logQueryFilter.getFilterByOperator().toString());</span> |
| <span class="source-line-no">1716</span><span id="line-1716"> CompletableFuture<List<LogEntry>> logEntries = getLogEntries(serverNames, logType,</span> |
| <span class="source-line-no">1717</span><span id="line-1717"> ServerType.REGION_SERVER, logQueryFilter.getLimit(), filterParams);</span> |
| <span class="source-line-no">1718</span><span id="line-1718"> return logEntries.thenApply(logEntryList -> logEntryList.stream()</span> |
| <span class="source-line-no">1719</span><span id="line-1719"> .map(logEntry -> (OnlineLogRecord) logEntry).collect(Collectors.toList()));</span> |
| <span class="source-line-no">1720</span><span id="line-1720"> }</span> |
| <span class="source-line-no">1721</span><span id="line-1721"></span> |
| <span class="source-line-no">1722</span><span id="line-1722"> /**</span> |
| <span class="source-line-no">1723</span><span id="line-1723"> * Clears online slow RPC logs from the provided list of RegionServers</span> |
| <span class="source-line-no">1724</span><span id="line-1724"> * @param serverNames Set of Server names to clean slowlog responses from</span> |
| <span class="source-line-no">1725</span><span id="line-1725"> * @return List of booleans representing if online slowlog response buffer is cleaned from each</span> |
| <span class="source-line-no">1726</span><span id="line-1726"> * RegionServer. The return value wrapped by a {@link CompletableFuture}</span> |
| <span class="source-line-no">1727</span><span id="line-1727"> */</span> |
| <span class="source-line-no">1728</span><span id="line-1728"> CompletableFuture<List<Boolean>> clearSlowLogResponses(final Set<ServerName> serverNames);</span> |
| <span class="source-line-no">1729</span><span id="line-1729"></span> |
| <span class="source-line-no">1730</span><span id="line-1730"> /**</span> |
| <span class="source-line-no">1731</span><span id="line-1731"> * Creates a new RegionServer group with the given name</span> |
| <span class="source-line-no">1732</span><span id="line-1732"> * @param groupName the name of the group</span> |
| <span class="source-line-no">1733</span><span id="line-1733"> */</span> |
| <span class="source-line-no">1734</span><span id="line-1734"> CompletableFuture<Void> addRSGroup(String groupName);</span> |
| <span class="source-line-no">1735</span><span id="line-1735"></span> |
| <span class="source-line-no">1736</span><span id="line-1736"> /**</span> |
| <span class="source-line-no">1737</span><span id="line-1737"> * Get group info for the given group name</span> |
| <span class="source-line-no">1738</span><span id="line-1738"> * @param groupName the group name</span> |
| <span class="source-line-no">1739</span><span id="line-1739"> * @return group info</span> |
| <span class="source-line-no">1740</span><span id="line-1740"> */</span> |
| <span class="source-line-no">1741</span><span id="line-1741"> CompletableFuture<RSGroupInfo> getRSGroup(String groupName);</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"> * Get group info for the given hostPort</span> |
| <span class="source-line-no">1745</span><span id="line-1745"> * @param hostPort HostPort to get RSGroupInfo for</span> |
| <span class="source-line-no">1746</span><span id="line-1746"> */</span> |
| <span class="source-line-no">1747</span><span id="line-1747"> CompletableFuture<RSGroupInfo> getRSGroup(Address hostPort);</span> |
| <span class="source-line-no">1748</span><span id="line-1748"></span> |
| <span class="source-line-no">1749</span><span id="line-1749"> /**</span> |
| <span class="source-line-no">1750</span><span id="line-1750"> * Get group info for the given table</span> |
| <span class="source-line-no">1751</span><span id="line-1751"> * @param tableName table name to get RSGroupInfo for</span> |
| <span class="source-line-no">1752</span><span id="line-1752"> */</span> |
| <span class="source-line-no">1753</span><span id="line-1753"> CompletableFuture<RSGroupInfo> getRSGroup(TableName tableName);</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"> * Lists current set of RegionServer groups</span> |
| <span class="source-line-no">1757</span><span id="line-1757"> */</span> |
| <span class="source-line-no">1758</span><span id="line-1758"> CompletableFuture<List<RSGroupInfo>> listRSGroups();</span> |
| <span class="source-line-no">1759</span><span id="line-1759"></span> |
| <span class="source-line-no">1760</span><span id="line-1760"> /**</span> |
| <span class="source-line-no">1761</span><span id="line-1761"> * Get all tables in this RegionServer group.</span> |
| <span class="source-line-no">1762</span><span id="line-1762"> * @param groupName the group name</span> |
| <span class="source-line-no">1763</span><span id="line-1763"> * @see #getConfiguredNamespacesAndTablesInRSGroup(String)</span> |
| <span class="source-line-no">1764</span><span id="line-1764"> */</span> |
| <span class="source-line-no">1765</span><span id="line-1765"> CompletableFuture<List<TableName>> listTablesInRSGroup(String groupName);</span> |
| <span class="source-line-no">1766</span><span id="line-1766"></span> |
| <span class="source-line-no">1767</span><span id="line-1767"> /**</span> |
| <span class="source-line-no">1768</span><span id="line-1768"> * Get the namespaces and tables which have this RegionServer group in descriptor.</span> |
| <span class="source-line-no">1769</span><span id="line-1769"> * <p/></span> |
| <span class="source-line-no">1770</span><span id="line-1770"> * The difference between this method and {@link #listTablesInRSGroup(String)} is that, this</span> |
| <span class="source-line-no">1771</span><span id="line-1771"> * method will not include the table which is actually in this RegionServr group but without the</span> |
| <span class="source-line-no">1772</span><span id="line-1772"> * RegionServer group configuration in its {@link TableDescriptor}. For example, we have a group</span> |
| <span class="source-line-no">1773</span><span id="line-1773"> * 'A', and we make namespace 'nsA' in this group, then all the tables under this namespace will</span> |
| <span class="source-line-no">1774</span><span id="line-1774"> * in the group 'A', but this method will not return these tables but only the namespace 'nsA',</span> |
| <span class="source-line-no">1775</span><span id="line-1775"> * while the {@link #listTablesInRSGroup(String)} will return all these tables.</span> |
| <span class="source-line-no">1776</span><span id="line-1776"> * @param groupName the group name</span> |
| <span class="source-line-no">1777</span><span id="line-1777"> * @see #listTablesInRSGroup(String)</span> |
| <span class="source-line-no">1778</span><span id="line-1778"> */</span> |
| <span class="source-line-no">1779</span><span id="line-1779"> CompletableFuture<Pair<List<String>, List<TableName>>></span> |
| <span class="source-line-no">1780</span><span id="line-1780"> getConfiguredNamespacesAndTablesInRSGroup(String groupName);</span> |
| <span class="source-line-no">1781</span><span id="line-1781"></span> |
| <span class="source-line-no">1782</span><span id="line-1782"> /**</span> |
| <span class="source-line-no">1783</span><span id="line-1783"> * Remove RegionServer group associated with the given name</span> |
| <span class="source-line-no">1784</span><span id="line-1784"> * @param groupName the group name</span> |
| <span class="source-line-no">1785</span><span id="line-1785"> */</span> |
| <span class="source-line-no">1786</span><span id="line-1786"> CompletableFuture<Void> removeRSGroup(String groupName);</span> |
| <span class="source-line-no">1787</span><span id="line-1787"></span> |
| <span class="source-line-no">1788</span><span id="line-1788"> /**</span> |
| <span class="source-line-no">1789</span><span id="line-1789"> * Remove decommissioned servers from group 1. Sometimes we may find the server aborted due to</span> |
| <span class="source-line-no">1790</span><span id="line-1790"> * some hardware failure and we must offline the server for repairing. Or we need to move some</span> |
| <span class="source-line-no">1791</span><span id="line-1791"> * servers to join other clusters. So we need to remove these servers from the group. 2.</span> |
| <span class="source-line-no">1792</span><span id="line-1792"> * Dead/recovering/live servers will be disallowed.</span> |
| <span class="source-line-no">1793</span><span id="line-1793"> * @param servers set of servers to remove</span> |
| <span class="source-line-no">1794</span><span id="line-1794"> */</span> |
| <span class="source-line-no">1795</span><span id="line-1795"> CompletableFuture<Void> removeServersFromRSGroup(Set<Address> servers);</span> |
| <span class="source-line-no">1796</span><span id="line-1796"></span> |
| <span class="source-line-no">1797</span><span id="line-1797"> /**</span> |
| <span class="source-line-no">1798</span><span id="line-1798"> * Move given set of servers to the specified target RegionServer group</span> |
| <span class="source-line-no">1799</span><span id="line-1799"> * @param servers set of servers to move</span> |
| <span class="source-line-no">1800</span><span id="line-1800"> * @param groupName the group to move servers to</span> |
| <span class="source-line-no">1801</span><span id="line-1801"> */</span> |
| <span class="source-line-no">1802</span><span id="line-1802"> CompletableFuture<Void> moveServersToRSGroup(Set<Address> servers, String groupName);</span> |
| <span class="source-line-no">1803</span><span id="line-1803"></span> |
| <span class="source-line-no">1804</span><span id="line-1804"> /**</span> |
| <span class="source-line-no">1805</span><span id="line-1805"> * Set the RegionServer group for tables</span> |
| <span class="source-line-no">1806</span><span id="line-1806"> * @param tables tables to set group for</span> |
| <span class="source-line-no">1807</span><span id="line-1807"> * @param groupName group name for tables</span> |
| <span class="source-line-no">1808</span><span id="line-1808"> */</span> |
| <span class="source-line-no">1809</span><span id="line-1809"> CompletableFuture<Void> setRSGroup(Set<TableName> tables, String groupName);</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"> * Balance regions in the given RegionServer group</span> |
| <span class="source-line-no">1813</span><span id="line-1813"> * @param groupName the group name</span> |
| <span class="source-line-no">1814</span><span id="line-1814"> * @return BalanceResponse details about the balancer run</span> |
| <span class="source-line-no">1815</span><span id="line-1815"> */</span> |
| <span class="source-line-no">1816</span><span id="line-1816"> default CompletableFuture<BalanceResponse> balanceRSGroup(String groupName) {</span> |
| <span class="source-line-no">1817</span><span id="line-1817"> return balanceRSGroup(groupName, BalanceRequest.defaultInstance());</span> |
| <span class="source-line-no">1818</span><span id="line-1818"> }</span> |
| <span class="source-line-no">1819</span><span id="line-1819"></span> |
| <span class="source-line-no">1820</span><span id="line-1820"> /**</span> |
| <span class="source-line-no">1821</span><span id="line-1821"> * Balance regions in the given RegionServer group</span> |
| <span class="source-line-no">1822</span><span id="line-1822"> * @param groupName the group name</span> |
| <span class="source-line-no">1823</span><span id="line-1823"> * @param request options to define how the balancer should run</span> |
| <span class="source-line-no">1824</span><span id="line-1824"> * @return BalanceResponse details about the balancer run</span> |
| <span class="source-line-no">1825</span><span id="line-1825"> */</span> |
| <span class="source-line-no">1826</span><span id="line-1826"> CompletableFuture<BalanceResponse> balanceRSGroup(String groupName, BalanceRequest request);</span> |
| <span class="source-line-no">1827</span><span id="line-1827"></span> |
| <span class="source-line-no">1828</span><span id="line-1828"> /**</span> |
| <span class="source-line-no">1829</span><span id="line-1829"> * Rename rsgroup</span> |
| <span class="source-line-no">1830</span><span id="line-1830"> * @param oldName old rsgroup name</span> |
| <span class="source-line-no">1831</span><span id="line-1831"> * @param newName new rsgroup name</span> |
| <span class="source-line-no">1832</span><span id="line-1832"> */</span> |
| <span class="source-line-no">1833</span><span id="line-1833"> CompletableFuture<Void> renameRSGroup(String oldName, String newName);</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"> * Update RSGroup configuration</span> |
| <span class="source-line-no">1837</span><span id="line-1837"> * @param groupName the group name</span> |
| <span class="source-line-no">1838</span><span id="line-1838"> * @param configuration new configuration of the group name to be set</span> |
| <span class="source-line-no">1839</span><span id="line-1839"> */</span> |
| <span class="source-line-no">1840</span><span id="line-1840"> CompletableFuture<Void> updateRSGroupConfig(String groupName, Map<String, String> configuration);</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"> * Retrieve recent online records from HMaster / RegionServers. Examples include slow/large RPC</span> |
| <span class="source-line-no">1844</span><span id="line-1844"> * logs, balancer decisions by master.</span> |
| <span class="source-line-no">1845</span><span id="line-1845"> * @param serverNames servers to retrieve records from, useful in case of records maintained by</span> |
| <span class="source-line-no">1846</span><span id="line-1846"> * RegionServer as we can select specific server. In case of</span> |
| <span class="source-line-no">1847</span><span id="line-1847"> * servertype=MASTER, logs will only come from the currently active master.</span> |
| <span class="source-line-no">1848</span><span id="line-1848"> * @param logType string representing type of log records</span> |
| <span class="source-line-no">1849</span><span id="line-1849"> * @param serverType enum for server type: HMaster or RegionServer</span> |
| <span class="source-line-no">1850</span><span id="line-1850"> * @param limit put a limit to list of records that server should send in response</span> |
| <span class="source-line-no">1851</span><span id="line-1851"> * @param filterParams additional filter params</span> |
| <span class="source-line-no">1852</span><span id="line-1852"> */</span> |
| <span class="source-line-no">1853</span><span id="line-1853"> CompletableFuture<List<LogEntry>> getLogEntries(Set<ServerName> serverNames, String logType,</span> |
| <span class="source-line-no">1854</span><span id="line-1854"> ServerType serverType, int limit, Map<String, Object> filterParams);</span> |
| <span class="source-line-no">1855</span><span id="line-1855"></span> |
| <span class="source-line-no">1856</span><span id="line-1856"> /**</span> |
| <span class="source-line-no">1857</span><span id="line-1857"> * Flush master local region</span> |
| <span class="source-line-no">1858</span><span id="line-1858"> */</span> |
| <span class="source-line-no">1859</span><span id="line-1859"> CompletableFuture<Void> flushMasterStore();</span> |
| <span class="source-line-no">1860</span><span id="line-1860"></span> |
| <span class="source-line-no">1861</span><span id="line-1861"> /**</span> |
| <span class="source-line-no">1862</span><span id="line-1862"> * Get the list of cached files</span> |
| <span class="source-line-no">1863</span><span id="line-1863"> */</span> |
| <span class="source-line-no">1864</span><span id="line-1864"> CompletableFuture<List<String>> getCachedFilesList(ServerName serverName);</span> |
| <span class="source-line-no">1865</span><span id="line-1865">}</span> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </pre> |
| </div> |
| </main> |
| </body> |
| </html> |