http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html index 91a0ffa..f0a063c 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html @@ -1985,260 +1985,266 @@ <span class="sourceLineNo">1977</span> deletes.add(e);<a name="line.1977"></a> <span class="sourceLineNo">1978</span> }<a name="line.1978"></a> <span class="sourceLineNo">1979</span> deleteFromMetaTable(connection, deletes);<a name="line.1979"></a> -<span class="sourceLineNo">1980</span> LOG.info("Deleted " + regionsInfo);<a name="line.1980"></a> -<span class="sourceLineNo">1981</span> }<a name="line.1981"></a> -<span class="sourceLineNo">1982</span><a name="line.1982"></a> -<span class="sourceLineNo">1983</span> /**<a name="line.1983"></a> -<span class="sourceLineNo">1984</span> * Adds and Removes the specified regions from hbase:meta<a name="line.1984"></a> -<span class="sourceLineNo">1985</span> * @param connection connection we're using<a name="line.1985"></a> -<span class="sourceLineNo">1986</span> * @param regionsToRemove list of regions to be deleted from META<a name="line.1986"></a> -<span class="sourceLineNo">1987</span> * @param regionsToAdd list of regions to be added to META<a name="line.1987"></a> -<span class="sourceLineNo">1988</span> * @throws IOException<a name="line.1988"></a> -<span class="sourceLineNo">1989</span> */<a name="line.1989"></a> -<span class="sourceLineNo">1990</span> public static void mutateRegions(Connection connection,<a name="line.1990"></a> -<span class="sourceLineNo">1991</span> final List<HRegionInfo> regionsToRemove,<a name="line.1991"></a> -<span class="sourceLineNo">1992</span> final List<HRegionInfo> regionsToAdd)<a name="line.1992"></a> -<span class="sourceLineNo">1993</span> throws IOException {<a name="line.1993"></a> -<span class="sourceLineNo">1994</span> List<Mutation> mutation = new ArrayList<>();<a name="line.1994"></a> -<span class="sourceLineNo">1995</span> if (regionsToRemove != null) {<a name="line.1995"></a> -<span class="sourceLineNo">1996</span> for (HRegionInfo hri: regionsToRemove) {<a name="line.1996"></a> -<span class="sourceLineNo">1997</span> mutation.add(makeDeleteFromRegionInfo(hri));<a name="line.1997"></a> -<span class="sourceLineNo">1998</span> }<a name="line.1998"></a> -<span class="sourceLineNo">1999</span> }<a name="line.1999"></a> -<span class="sourceLineNo">2000</span> if (regionsToAdd != null) {<a name="line.2000"></a> -<span class="sourceLineNo">2001</span> for (HRegionInfo hri: regionsToAdd) {<a name="line.2001"></a> -<span class="sourceLineNo">2002</span> mutation.add(makePutFromRegionInfo(hri));<a name="line.2002"></a> -<span class="sourceLineNo">2003</span> }<a name="line.2003"></a> -<span class="sourceLineNo">2004</span> }<a name="line.2004"></a> -<span class="sourceLineNo">2005</span> mutateMetaTable(connection, mutation);<a name="line.2005"></a> -<span class="sourceLineNo">2006</span> if (regionsToRemove != null && regionsToRemove.size() > 0) {<a name="line.2006"></a> -<span class="sourceLineNo">2007</span> LOG.debug("Deleted " + HRegionInfo.getShortNameToLog(regionsToRemove));<a name="line.2007"></a> -<span class="sourceLineNo">2008</span> }<a name="line.2008"></a> -<span class="sourceLineNo">2009</span> if (regionsToAdd != null && regionsToAdd.size() > 0) {<a name="line.2009"></a> -<span class="sourceLineNo">2010</span> LOG.debug("Added " + HRegionInfo.getShortNameToLog(regionsToAdd));<a name="line.2010"></a> +<span class="sourceLineNo">1980</span> LOG.info("Deleted " + regionsInfo.size() + " regions from META");<a name="line.1980"></a> +<span class="sourceLineNo">1981</span> if (LOG.isDebugEnabled()) {<a name="line.1981"></a> +<span class="sourceLineNo">1982</span> LOG.debug("Deleted regions: " + regionsInfo);<a name="line.1982"></a> +<span class="sourceLineNo">1983</span> }<a name="line.1983"></a> +<span class="sourceLineNo">1984</span> }<a name="line.1984"></a> +<span class="sourceLineNo">1985</span><a name="line.1985"></a> +<span class="sourceLineNo">1986</span> /**<a name="line.1986"></a> +<span class="sourceLineNo">1987</span> * Adds and Removes the specified regions from hbase:meta<a name="line.1987"></a> +<span class="sourceLineNo">1988</span> * @param connection connection we're using<a name="line.1988"></a> +<span class="sourceLineNo">1989</span> * @param regionsToRemove list of regions to be deleted from META<a name="line.1989"></a> +<span class="sourceLineNo">1990</span> * @param regionsToAdd list of regions to be added to META<a name="line.1990"></a> +<span class="sourceLineNo">1991</span> * @throws IOException<a name="line.1991"></a> +<span class="sourceLineNo">1992</span> */<a name="line.1992"></a> +<span class="sourceLineNo">1993</span> public static void mutateRegions(Connection connection,<a name="line.1993"></a> +<span class="sourceLineNo">1994</span> final List<HRegionInfo> regionsToRemove,<a name="line.1994"></a> +<span class="sourceLineNo">1995</span> final List<HRegionInfo> regionsToAdd)<a name="line.1995"></a> +<span class="sourceLineNo">1996</span> throws IOException {<a name="line.1996"></a> +<span class="sourceLineNo">1997</span> List<Mutation> mutation = new ArrayList<>();<a name="line.1997"></a> +<span class="sourceLineNo">1998</span> if (regionsToRemove != null) {<a name="line.1998"></a> +<span class="sourceLineNo">1999</span> for (HRegionInfo hri: regionsToRemove) {<a name="line.1999"></a> +<span class="sourceLineNo">2000</span> mutation.add(makeDeleteFromRegionInfo(hri));<a name="line.2000"></a> +<span class="sourceLineNo">2001</span> }<a name="line.2001"></a> +<span class="sourceLineNo">2002</span> }<a name="line.2002"></a> +<span class="sourceLineNo">2003</span> if (regionsToAdd != null) {<a name="line.2003"></a> +<span class="sourceLineNo">2004</span> for (HRegionInfo hri: regionsToAdd) {<a name="line.2004"></a> +<span class="sourceLineNo">2005</span> mutation.add(makePutFromRegionInfo(hri));<a name="line.2005"></a> +<span class="sourceLineNo">2006</span> }<a name="line.2006"></a> +<span class="sourceLineNo">2007</span> }<a name="line.2007"></a> +<span class="sourceLineNo">2008</span> mutateMetaTable(connection, mutation);<a name="line.2008"></a> +<span class="sourceLineNo">2009</span> if (regionsToRemove != null && regionsToRemove.size() > 0) {<a name="line.2009"></a> +<span class="sourceLineNo">2010</span> LOG.debug("Deleted " + HRegionInfo.getShortNameToLog(regionsToRemove));<a name="line.2010"></a> <span class="sourceLineNo">2011</span> }<a name="line.2011"></a> -<span class="sourceLineNo">2012</span> }<a name="line.2012"></a> -<span class="sourceLineNo">2013</span><a name="line.2013"></a> -<span class="sourceLineNo">2014</span> /**<a name="line.2014"></a> -<span class="sourceLineNo">2015</span> * Overwrites the specified regions from hbase:meta<a name="line.2015"></a> -<span class="sourceLineNo">2016</span> * @param connection connection we're using<a name="line.2016"></a> -<span class="sourceLineNo">2017</span> * @param regionInfos list of regions to be added to META<a name="line.2017"></a> -<span class="sourceLineNo">2018</span> * @throws IOException<a name="line.2018"></a> -<span class="sourceLineNo">2019</span> */<a name="line.2019"></a> -<span class="sourceLineNo">2020</span> public static void overwriteRegions(Connection connection,<a name="line.2020"></a> -<span class="sourceLineNo">2021</span> List<HRegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.2021"></a> -<span class="sourceLineNo">2022</span> // use master time for delete marker and the Put<a name="line.2022"></a> -<span class="sourceLineNo">2023</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.2023"></a> -<span class="sourceLineNo">2024</span> deleteRegions(connection, regionInfos, now);<a name="line.2024"></a> -<span class="sourceLineNo">2025</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.2025"></a> -<span class="sourceLineNo">2026</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.2026"></a> -<span class="sourceLineNo">2027</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.2027"></a> -<span class="sourceLineNo">2028</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.2028"></a> -<span class="sourceLineNo">2029</span> //<a name="line.2029"></a> -<span class="sourceLineNo">2030</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.2030"></a> -<span class="sourceLineNo">2031</span> addRegionsToMeta(connection, regionInfos, regionReplication, now+1);<a name="line.2031"></a> -<span class="sourceLineNo">2032</span> LOG.info("Overwritten " + regionInfos);<a name="line.2032"></a> -<span class="sourceLineNo">2033</span> }<a name="line.2033"></a> -<span class="sourceLineNo">2034</span><a name="line.2034"></a> -<span class="sourceLineNo">2035</span> /**<a name="line.2035"></a> -<span class="sourceLineNo">2036</span> * Deletes merge qualifiers for the specified merged region.<a name="line.2036"></a> -<span class="sourceLineNo">2037</span> * @param connection connection we're using<a name="line.2037"></a> -<span class="sourceLineNo">2038</span> * @param mergedRegion<a name="line.2038"></a> -<span class="sourceLineNo">2039</span> * @throws IOException<a name="line.2039"></a> -<span class="sourceLineNo">2040</span> */<a name="line.2040"></a> -<span class="sourceLineNo">2041</span> public static void deleteMergeQualifiers(Connection connection,<a name="line.2041"></a> -<span class="sourceLineNo">2042</span> final HRegionInfo mergedRegion) throws IOException {<a name="line.2042"></a> -<span class="sourceLineNo">2043</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.2043"></a> -<span class="sourceLineNo">2044</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.2044"></a> -<span class="sourceLineNo">2045</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.2045"></a> -<span class="sourceLineNo">2046</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.2046"></a> -<span class="sourceLineNo">2047</span> deleteFromMetaTable(connection, delete);<a name="line.2047"></a> -<span class="sourceLineNo">2048</span> LOG.info("Deleted references in merged region "<a name="line.2048"></a> -<span class="sourceLineNo">2049</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.2049"></a> -<span class="sourceLineNo">2050</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.2050"></a> -<span class="sourceLineNo">2051</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.2051"></a> -<span class="sourceLineNo">2052</span> }<a name="line.2052"></a> -<span class="sourceLineNo">2053</span><a name="line.2053"></a> -<span class="sourceLineNo">2054</span> public static Put addRegionInfo(final Put p, final HRegionInfo hri)<a name="line.2054"></a> -<span class="sourceLineNo">2055</span> throws IOException {<a name="line.2055"></a> -<span class="sourceLineNo">2056</span> p.addImmutable(getCatalogFamily(), HConstants.REGIONINFO_QUALIFIER,<a name="line.2056"></a> -<span class="sourceLineNo">2057</span> hri.toByteArray());<a name="line.2057"></a> -<span class="sourceLineNo">2058</span> return p;<a name="line.2058"></a> -<span class="sourceLineNo">2059</span> }<a name="line.2059"></a> -<span class="sourceLineNo">2060</span><a name="line.2060"></a> -<span class="sourceLineNo">2061</span> public static Put addLocation(final Put p, final ServerName sn, long openSeqNum,<a name="line.2061"></a> -<span class="sourceLineNo">2062</span> long time, int replicaId){<a name="line.2062"></a> -<span class="sourceLineNo">2063</span> if (time <= 0) {<a name="line.2063"></a> -<span class="sourceLineNo">2064</span> time = EnvironmentEdgeManager.currentTime();<a name="line.2064"></a> -<span class="sourceLineNo">2065</span> }<a name="line.2065"></a> -<span class="sourceLineNo">2066</span> p.addImmutable(getCatalogFamily(), getServerColumn(replicaId), time,<a name="line.2066"></a> -<span class="sourceLineNo">2067</span> Bytes.toBytes(sn.getHostAndPort()));<a name="line.2067"></a> -<span class="sourceLineNo">2068</span> p.addImmutable(getCatalogFamily(), getStartCodeColumn(replicaId), time,<a name="line.2068"></a> -<span class="sourceLineNo">2069</span> Bytes.toBytes(sn.getStartcode()));<a name="line.2069"></a> -<span class="sourceLineNo">2070</span> p.addImmutable(getCatalogFamily(), getSeqNumColumn(replicaId), time,<a name="line.2070"></a> -<span class="sourceLineNo">2071</span> Bytes.toBytes(openSeqNum));<a name="line.2071"></a> -<span class="sourceLineNo">2072</span> return p;<a name="line.2072"></a> -<span class="sourceLineNo">2073</span> }<a name="line.2073"></a> -<span class="sourceLineNo">2074</span><a name="line.2074"></a> -<span class="sourceLineNo">2075</span> public static Put addEmptyLocation(final Put p, int replicaId) {<a name="line.2075"></a> -<span class="sourceLineNo">2076</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.2076"></a> -<span class="sourceLineNo">2077</span> p.addImmutable(getCatalogFamily(), getServerColumn(replicaId), now, null);<a name="line.2077"></a> -<span class="sourceLineNo">2078</span> p.addImmutable(getCatalogFamily(), getStartCodeColumn(replicaId), now, null);<a name="line.2078"></a> -<span class="sourceLineNo">2079</span> p.addImmutable(getCatalogFamily(), getSeqNumColumn(replicaId), now, null);<a name="line.2079"></a> -<span class="sourceLineNo">2080</span> return p;<a name="line.2080"></a> -<span class="sourceLineNo">2081</span> }<a name="line.2081"></a> -<span class="sourceLineNo">2082</span><a name="line.2082"></a> -<span class="sourceLineNo">2083</span> private static String mutationsToString(List<? extends Mutation> mutations) throws IOException {<a name="line.2083"></a> -<span class="sourceLineNo">2084</span> StringBuilder sb = new StringBuilder();<a name="line.2084"></a> -<span class="sourceLineNo">2085</span> String prefix = "";<a name="line.2085"></a> -<span class="sourceLineNo">2086</span> for (Mutation mutation : mutations) {<a name="line.2086"></a> -<span class="sourceLineNo">2087</span> sb.append(prefix).append(mutationToString(mutation));<a name="line.2087"></a> -<span class="sourceLineNo">2088</span> prefix = ", ";<a name="line.2088"></a> -<span class="sourceLineNo">2089</span> }<a name="line.2089"></a> -<span class="sourceLineNo">2090</span> return sb.toString();<a name="line.2090"></a> -<span class="sourceLineNo">2091</span> }<a name="line.2091"></a> -<span class="sourceLineNo">2092</span><a name="line.2092"></a> -<span class="sourceLineNo">2093</span> private static String mutationToString(Mutation p) throws IOException {<a name="line.2093"></a> -<span class="sourceLineNo">2094</span> return p.getClass().getSimpleName() + p.toJSON();<a name="line.2094"></a> -<span class="sourceLineNo">2095</span> }<a name="line.2095"></a> -<span class="sourceLineNo">2096</span><a name="line.2096"></a> -<span class="sourceLineNo">2097</span> /**<a name="line.2097"></a> -<span class="sourceLineNo">2098</span> * Get replication position for a peer in a region.<a name="line.2098"></a> -<span class="sourceLineNo">2099</span> * @param connection connection we're using<a name="line.2099"></a> -<span class="sourceLineNo">2100</span> * @return the position of this peer, -1 if no position in meta.<a name="line.2100"></a> -<span class="sourceLineNo">2101</span> */<a name="line.2101"></a> -<span class="sourceLineNo">2102</span> public static long getReplicationPositionForOnePeer(Connection connection,<a name="line.2102"></a> -<span class="sourceLineNo">2103</span> byte[] encodedRegionName, String peerId) throws IOException {<a name="line.2103"></a> -<span class="sourceLineNo">2104</span> Get get = new Get(encodedRegionName);<a name="line.2104"></a> -<span class="sourceLineNo">2105</span> get.addColumn(HConstants.REPLICATION_POSITION_FAMILY, Bytes.toBytes(peerId));<a name="line.2105"></a> -<span class="sourceLineNo">2106</span> Result r = get(getMetaHTable(connection), get);<a name="line.2106"></a> -<span class="sourceLineNo">2107</span> if (r.isEmpty()) {<a name="line.2107"></a> -<span class="sourceLineNo">2108</span> return -1;<a name="line.2108"></a> -<span class="sourceLineNo">2109</span> }<a name="line.2109"></a> -<span class="sourceLineNo">2110</span> Cell cell = r.rawCells()[0];<a name="line.2110"></a> -<span class="sourceLineNo">2111</span> return Bytes.toLong(cell.getValueArray(),cell.getValueOffset(),cell.getValueLength());<a name="line.2111"></a> -<span class="sourceLineNo">2112</span> }<a name="line.2112"></a> -<span class="sourceLineNo">2113</span><a name="line.2113"></a> -<span class="sourceLineNo">2114</span> /**<a name="line.2114"></a> -<span class="sourceLineNo">2115</span> * Get replication positions for all peers in a region.<a name="line.2115"></a> -<span class="sourceLineNo">2116</span> * @param connection connection we're using<a name="line.2116"></a> -<span class="sourceLineNo">2117</span> * @param encodedRegionName region's encoded name<a name="line.2117"></a> -<span class="sourceLineNo">2118</span> * @return the map of positions for each peer<a name="line.2118"></a> -<span class="sourceLineNo">2119</span> */<a name="line.2119"></a> -<span class="sourceLineNo">2120</span> public static Map<String, Long> getReplicationPositionForAllPeer(Connection connection,<a name="line.2120"></a> -<span class="sourceLineNo">2121</span> byte[] encodedRegionName) throws IOException {<a name="line.2121"></a> -<span class="sourceLineNo">2122</span> Get get = new Get(encodedRegionName);<a name="line.2122"></a> -<span class="sourceLineNo">2123</span> get.addFamily(HConstants.REPLICATION_POSITION_FAMILY);<a name="line.2123"></a> -<span class="sourceLineNo">2124</span> Result r = get(getMetaHTable(connection), get);<a name="line.2124"></a> -<span class="sourceLineNo">2125</span> Map<String, Long> map = new HashMap<>((int) (r.size() / 0.75 + 1));<a name="line.2125"></a> -<span class="sourceLineNo">2126</span> for (Cell c : r.listCells()) {<a name="line.2126"></a> -<span class="sourceLineNo">2127</span> map.put(<a name="line.2127"></a> -<span class="sourceLineNo">2128</span> Bytes.toString(c.getQualifierArray(), c.getQualifierOffset(), c.getQualifierLength()),<a name="line.2128"></a> -<span class="sourceLineNo">2129</span> Bytes.toLong(c.getValueArray(), c.getValueOffset(), c.getValueLength()));<a name="line.2129"></a> -<span class="sourceLineNo">2130</span> }<a name="line.2130"></a> -<span class="sourceLineNo">2131</span> return map;<a name="line.2131"></a> -<span class="sourceLineNo">2132</span> }<a name="line.2132"></a> -<span class="sourceLineNo">2133</span><a name="line.2133"></a> -<span class="sourceLineNo">2134</span> /**<a name="line.2134"></a> -<span class="sourceLineNo">2135</span> * Get replication barriers for all peers in a region.<a name="line.2135"></a> -<span class="sourceLineNo">2136</span> * @param encodedRegionName region's encoded name<a name="line.2136"></a> -<span class="sourceLineNo">2137</span> * @return a list of barrier sequence numbers.<a name="line.2137"></a> -<span class="sourceLineNo">2138</span> * @throws IOException<a name="line.2138"></a> -<span class="sourceLineNo">2139</span> */<a name="line.2139"></a> -<span class="sourceLineNo">2140</span> public static List<Long> getReplicationBarriers(Connection connection, byte[] encodedRegionName)<a name="line.2140"></a> -<span class="sourceLineNo">2141</span> throws IOException {<a name="line.2141"></a> -<span class="sourceLineNo">2142</span> Get get = new Get(encodedRegionName);<a name="line.2142"></a> -<span class="sourceLineNo">2143</span> get.addFamily(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.2143"></a> -<span class="sourceLineNo">2144</span> Result r = get(getMetaHTable(connection), get);<a name="line.2144"></a> -<span class="sourceLineNo">2145</span> List<Long> list = new ArrayList<>();<a name="line.2145"></a> -<span class="sourceLineNo">2146</span> if (!r.isEmpty()) {<a name="line.2146"></a> -<span class="sourceLineNo">2147</span> for (Cell cell : r.rawCells()) {<a name="line.2147"></a> -<span class="sourceLineNo">2148</span> list.add(Bytes.toLong(cell.getQualifierArray(), cell.getQualifierOffset(),<a name="line.2148"></a> -<span class="sourceLineNo">2149</span> cell.getQualifierLength()));<a name="line.2149"></a> -<span class="sourceLineNo">2150</span> }<a name="line.2150"></a> -<span class="sourceLineNo">2151</span> }<a name="line.2151"></a> -<span class="sourceLineNo">2152</span> return list;<a name="line.2152"></a> -<span class="sourceLineNo">2153</span> }<a name="line.2153"></a> -<span class="sourceLineNo">2154</span><a name="line.2154"></a> -<span class="sourceLineNo">2155</span> /**<a name="line.2155"></a> -<span class="sourceLineNo">2156</span> * Get all barriers in all regions.<a name="line.2156"></a> -<span class="sourceLineNo">2157</span> * @return a map of barrier lists in all regions<a name="line.2157"></a> -<span class="sourceLineNo">2158</span> * @throws IOException<a name="line.2158"></a> -<span class="sourceLineNo">2159</span> */<a name="line.2159"></a> -<span class="sourceLineNo">2160</span> public static Map<String, List<Long>> getAllBarriers(Connection connection) throws IOException {<a name="line.2160"></a> -<span class="sourceLineNo">2161</span> Map<String, List<Long>> map = new HashMap<>();<a name="line.2161"></a> -<span class="sourceLineNo">2162</span> Scan scan = new Scan();<a name="line.2162"></a> -<span class="sourceLineNo">2163</span> scan.addFamily(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.2163"></a> -<span class="sourceLineNo">2164</span> try (Table t = getMetaHTable(connection);<a name="line.2164"></a> -<span class="sourceLineNo">2165</span> ResultScanner scanner = t.getScanner(scan)) {<a name="line.2165"></a> -<span class="sourceLineNo">2166</span> Result result;<a name="line.2166"></a> -<span class="sourceLineNo">2167</span> while ((result = scanner.next()) != null) {<a name="line.2167"></a> -<span class="sourceLineNo">2168</span> String key = Bytes.toString(result.getRow());<a name="line.2168"></a> -<span class="sourceLineNo">2169</span> List<Long> list = new ArrayList<>(result.rawCells().length);<a name="line.2169"></a> -<span class="sourceLineNo">2170</span> for (Cell cell : result.rawCells()) {<a name="line.2170"></a> -<span class="sourceLineNo">2171</span> list.add(Bytes.toLong(cell.getQualifierArray(), cell.getQualifierOffset(),<a name="line.2171"></a> -<span class="sourceLineNo">2172</span> cell.getQualifierLength()));<a name="line.2172"></a> -<span class="sourceLineNo">2173</span> }<a name="line.2173"></a> -<span class="sourceLineNo">2174</span> map.put(key, list);<a name="line.2174"></a> -<span class="sourceLineNo">2175</span> }<a name="line.2175"></a> -<span class="sourceLineNo">2176</span> }<a name="line.2176"></a> -<span class="sourceLineNo">2177</span> return map;<a name="line.2177"></a> -<span class="sourceLineNo">2178</span> }<a name="line.2178"></a> -<span class="sourceLineNo">2179</span><a name="line.2179"></a> -<span class="sourceLineNo">2180</span> /**<a name="line.2180"></a> -<span class="sourceLineNo">2181</span> * Get daughter region(s) for a region, only used in serial replication.<a name="line.2181"></a> -<span class="sourceLineNo">2182</span> * @param connection connection we're using<a name="line.2182"></a> -<span class="sourceLineNo">2183</span> * @param encodedName region's encoded name<a name="line.2183"></a> -<span class="sourceLineNo">2184</span> * @throws IOException<a name="line.2184"></a> -<span class="sourceLineNo">2185</span> */<a name="line.2185"></a> -<span class="sourceLineNo">2186</span> public static String getSerialReplicationDaughterRegion(Connection connection, byte[] encodedName)<a name="line.2186"></a> -<span class="sourceLineNo">2187</span> throws IOException {<a name="line.2187"></a> -<span class="sourceLineNo">2188</span> Get get = new Get(encodedName);<a name="line.2188"></a> -<span class="sourceLineNo">2189</span> get.addColumn(HConstants.REPLICATION_META_FAMILY, daughterNameCq);<a name="line.2189"></a> -<span class="sourceLineNo">2190</span> Result result = get(getMetaHTable(connection), get);<a name="line.2190"></a> -<span class="sourceLineNo">2191</span> if (!result.isEmpty()) {<a name="line.2191"></a> -<span class="sourceLineNo">2192</span> Cell c = result.rawCells()[0];<a name="line.2192"></a> -<span class="sourceLineNo">2193</span> return Bytes.toString(c.getValueArray(), c.getValueOffset(), c.getValueLength());<a name="line.2193"></a> -<span class="sourceLineNo">2194</span> }<a name="line.2194"></a> -<span class="sourceLineNo">2195</span> return null;<a name="line.2195"></a> -<span class="sourceLineNo">2196</span> }<a name="line.2196"></a> -<span class="sourceLineNo">2197</span><a name="line.2197"></a> -<span class="sourceLineNo">2198</span> /**<a name="line.2198"></a> -<span class="sourceLineNo">2199</span> * Get parent region(s) for a region, only used in serial replication.<a name="line.2199"></a> -<span class="sourceLineNo">2200</span> * @param connection connection we're using<a name="line.2200"></a> -<span class="sourceLineNo">2201</span> * @param encodedName region's encoded name<a name="line.2201"></a> -<span class="sourceLineNo">2202</span> * @throws IOException<a name="line.2202"></a> -<span class="sourceLineNo">2203</span> */<a name="line.2203"></a> -<span class="sourceLineNo">2204</span> public static String getSerialReplicationParentRegion(Connection connection, byte[] encodedName)<a name="line.2204"></a> -<span class="sourceLineNo">2205</span> throws IOException {<a name="line.2205"></a> -<span class="sourceLineNo">2206</span> Get get = new Get(encodedName);<a name="line.2206"></a> -<span class="sourceLineNo">2207</span> get.addColumn(HConstants.REPLICATION_META_FAMILY, parentNameCq);<a name="line.2207"></a> -<span class="sourceLineNo">2208</span> Result result = get(getMetaHTable(connection), get);<a name="line.2208"></a> -<span class="sourceLineNo">2209</span> if (!result.isEmpty()) {<a name="line.2209"></a> -<span class="sourceLineNo">2210</span> Cell c = result.rawCells()[0];<a name="line.2210"></a> -<span class="sourceLineNo">2211</span> return Bytes.toString(c.getValueArray(), c.getValueOffset(), c.getValueLength());<a name="line.2211"></a> -<span class="sourceLineNo">2212</span> }<a name="line.2212"></a> -<span class="sourceLineNo">2213</span> return null;<a name="line.2213"></a> -<span class="sourceLineNo">2214</span> }<a name="line.2214"></a> -<span class="sourceLineNo">2215</span><a name="line.2215"></a> -<span class="sourceLineNo">2216</span> /**<a name="line.2216"></a> -<span class="sourceLineNo">2217</span> * Get the table name for a region, only used in serial replication.<a name="line.2217"></a> -<span class="sourceLineNo">2218</span> * @param connection connection we're using<a name="line.2218"></a> -<span class="sourceLineNo">2219</span> * @param encodedName region's encoded name<a name="line.2219"></a> -<span class="sourceLineNo">2220</span> * @throws IOException<a name="line.2220"></a> -<span class="sourceLineNo">2221</span> */<a name="line.2221"></a> -<span class="sourceLineNo">2222</span> public static String getSerialReplicationTableName(Connection connection, byte[] encodedName)<a name="line.2222"></a> -<span class="sourceLineNo">2223</span> throws IOException {<a name="line.2223"></a> -<span class="sourceLineNo">2224</span> Get get = new Get(encodedName);<a name="line.2224"></a> -<span class="sourceLineNo">2225</span> get.addColumn(HConstants.REPLICATION_META_FAMILY, tableNameCq);<a name="line.2225"></a> -<span class="sourceLineNo">2226</span> Result result = get(getMetaHTable(connection), get);<a name="line.2226"></a> -<span class="sourceLineNo">2227</span> if (!result.isEmpty()) {<a name="line.2227"></a> -<span class="sourceLineNo">2228</span> Cell c = result.rawCells()[0];<a name="line.2228"></a> -<span class="sourceLineNo">2229</span> return Bytes.toString(c.getValueArray(), c.getValueOffset(), c.getValueLength());<a name="line.2229"></a> -<span class="sourceLineNo">2230</span> }<a name="line.2230"></a> -<span class="sourceLineNo">2231</span> return null;<a name="line.2231"></a> -<span class="sourceLineNo">2232</span> }<a name="line.2232"></a> -<span class="sourceLineNo">2233</span>}<a name="line.2233"></a> +<span class="sourceLineNo">2012</span> if (regionsToAdd != null && regionsToAdd.size() > 0) {<a name="line.2012"></a> +<span class="sourceLineNo">2013</span> LOG.debug("Added " + HRegionInfo.getShortNameToLog(regionsToAdd));<a name="line.2013"></a> +<span class="sourceLineNo">2014</span> }<a name="line.2014"></a> +<span class="sourceLineNo">2015</span> }<a name="line.2015"></a> +<span class="sourceLineNo">2016</span><a name="line.2016"></a> +<span class="sourceLineNo">2017</span> /**<a name="line.2017"></a> +<span class="sourceLineNo">2018</span> * Overwrites the specified regions from hbase:meta<a name="line.2018"></a> +<span class="sourceLineNo">2019</span> * @param connection connection we're using<a name="line.2019"></a> +<span class="sourceLineNo">2020</span> * @param regionInfos list of regions to be added to META<a name="line.2020"></a> +<span class="sourceLineNo">2021</span> * @throws IOException<a name="line.2021"></a> +<span class="sourceLineNo">2022</span> */<a name="line.2022"></a> +<span class="sourceLineNo">2023</span> public static void overwriteRegions(Connection connection,<a name="line.2023"></a> +<span class="sourceLineNo">2024</span> List<HRegionInfo> regionInfos, int regionReplication) throws IOException {<a name="line.2024"></a> +<span class="sourceLineNo">2025</span> // use master time for delete marker and the Put<a name="line.2025"></a> +<span class="sourceLineNo">2026</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.2026"></a> +<span class="sourceLineNo">2027</span> deleteRegions(connection, regionInfos, now);<a name="line.2027"></a> +<span class="sourceLineNo">2028</span> // Why sleep? This is the easiest way to ensure that the previous deletes does not<a name="line.2028"></a> +<span class="sourceLineNo">2029</span> // eclipse the following puts, that might happen in the same ts from the server.<a name="line.2029"></a> +<span class="sourceLineNo">2030</span> // See HBASE-9906, and HBASE-9879. Once either HBASE-9879, HBASE-8770 is fixed,<a name="line.2030"></a> +<span class="sourceLineNo">2031</span> // or HBASE-9905 is fixed and meta uses seqIds, we do not need the sleep.<a name="line.2031"></a> +<span class="sourceLineNo">2032</span> //<a name="line.2032"></a> +<span class="sourceLineNo">2033</span> // HBASE-13875 uses master timestamp for the mutations. The 20ms sleep is not needed<a name="line.2033"></a> +<span class="sourceLineNo">2034</span> addRegionsToMeta(connection, regionInfos, regionReplication, now+1);<a name="line.2034"></a> +<span class="sourceLineNo">2035</span> LOG.info("Overwritten " + regionInfos.size() + " regions to Meta");<a name="line.2035"></a> +<span class="sourceLineNo">2036</span> if (LOG.isDebugEnabled()) {<a name="line.2036"></a> +<span class="sourceLineNo">2037</span> LOG.debug("Overwritten regions: " + regionInfos);<a name="line.2037"></a> +<span class="sourceLineNo">2038</span> }<a name="line.2038"></a> +<span class="sourceLineNo">2039</span> }<a name="line.2039"></a> +<span class="sourceLineNo">2040</span><a name="line.2040"></a> +<span class="sourceLineNo">2041</span> /**<a name="line.2041"></a> +<span class="sourceLineNo">2042</span> * Deletes merge qualifiers for the specified merged region.<a name="line.2042"></a> +<span class="sourceLineNo">2043</span> * @param connection connection we're using<a name="line.2043"></a> +<span class="sourceLineNo">2044</span> * @param mergedRegion<a name="line.2044"></a> +<span class="sourceLineNo">2045</span> * @throws IOException<a name="line.2045"></a> +<span class="sourceLineNo">2046</span> */<a name="line.2046"></a> +<span class="sourceLineNo">2047</span> public static void deleteMergeQualifiers(Connection connection,<a name="line.2047"></a> +<span class="sourceLineNo">2048</span> final HRegionInfo mergedRegion) throws IOException {<a name="line.2048"></a> +<span class="sourceLineNo">2049</span> long time = EnvironmentEdgeManager.currentTime();<a name="line.2049"></a> +<span class="sourceLineNo">2050</span> Delete delete = new Delete(mergedRegion.getRegionName());<a name="line.2050"></a> +<span class="sourceLineNo">2051</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEA_QUALIFIER, time);<a name="line.2051"></a> +<span class="sourceLineNo">2052</span> delete.addColumns(getCatalogFamily(), HConstants.MERGEB_QUALIFIER, time);<a name="line.2052"></a> +<span class="sourceLineNo">2053</span> deleteFromMetaTable(connection, delete);<a name="line.2053"></a> +<span class="sourceLineNo">2054</span> LOG.info("Deleted references in merged region "<a name="line.2054"></a> +<span class="sourceLineNo">2055</span> + mergedRegion.getRegionNameAsString() + ", qualifier="<a name="line.2055"></a> +<span class="sourceLineNo">2056</span> + Bytes.toStringBinary(HConstants.MERGEA_QUALIFIER) + " and qualifier="<a name="line.2056"></a> +<span class="sourceLineNo">2057</span> + Bytes.toStringBinary(HConstants.MERGEB_QUALIFIER));<a name="line.2057"></a> +<span class="sourceLineNo">2058</span> }<a name="line.2058"></a> +<span class="sourceLineNo">2059</span><a name="line.2059"></a> +<span class="sourceLineNo">2060</span> public static Put addRegionInfo(final Put p, final HRegionInfo hri)<a name="line.2060"></a> +<span class="sourceLineNo">2061</span> throws IOException {<a name="line.2061"></a> +<span class="sourceLineNo">2062</span> p.addImmutable(getCatalogFamily(), HConstants.REGIONINFO_QUALIFIER,<a name="line.2062"></a> +<span class="sourceLineNo">2063</span> hri.toByteArray());<a name="line.2063"></a> +<span class="sourceLineNo">2064</span> return p;<a name="line.2064"></a> +<span class="sourceLineNo">2065</span> }<a name="line.2065"></a> +<span class="sourceLineNo">2066</span><a name="line.2066"></a> +<span class="sourceLineNo">2067</span> public static Put addLocation(final Put p, final ServerName sn, long openSeqNum,<a name="line.2067"></a> +<span class="sourceLineNo">2068</span> long time, int replicaId){<a name="line.2068"></a> +<span class="sourceLineNo">2069</span> if (time <= 0) {<a name="line.2069"></a> +<span class="sourceLineNo">2070</span> time = EnvironmentEdgeManager.currentTime();<a name="line.2070"></a> +<span class="sourceLineNo">2071</span> }<a name="line.2071"></a> +<span class="sourceLineNo">2072</span> p.addImmutable(getCatalogFamily(), getServerColumn(replicaId), time,<a name="line.2072"></a> +<span class="sourceLineNo">2073</span> Bytes.toBytes(sn.getHostAndPort()));<a name="line.2073"></a> +<span class="sourceLineNo">2074</span> p.addImmutable(getCatalogFamily(), getStartCodeColumn(replicaId), time,<a name="line.2074"></a> +<span class="sourceLineNo">2075</span> Bytes.toBytes(sn.getStartcode()));<a name="line.2075"></a> +<span class="sourceLineNo">2076</span> p.addImmutable(getCatalogFamily(), getSeqNumColumn(replicaId), time,<a name="line.2076"></a> +<span class="sourceLineNo">2077</span> Bytes.toBytes(openSeqNum));<a name="line.2077"></a> +<span class="sourceLineNo">2078</span> return p;<a name="line.2078"></a> +<span class="sourceLineNo">2079</span> }<a name="line.2079"></a> +<span class="sourceLineNo">2080</span><a name="line.2080"></a> +<span class="sourceLineNo">2081</span> public static Put addEmptyLocation(final Put p, int replicaId) {<a name="line.2081"></a> +<span class="sourceLineNo">2082</span> long now = EnvironmentEdgeManager.currentTime();<a name="line.2082"></a> +<span class="sourceLineNo">2083</span> p.addImmutable(getCatalogFamily(), getServerColumn(replicaId), now, null);<a name="line.2083"></a> +<span class="sourceLineNo">2084</span> p.addImmutable(getCatalogFamily(), getStartCodeColumn(replicaId), now, null);<a name="line.2084"></a> +<span class="sourceLineNo">2085</span> p.addImmutable(getCatalogFamily(), getSeqNumColumn(replicaId), now, null);<a name="line.2085"></a> +<span class="sourceLineNo">2086</span> return p;<a name="line.2086"></a> +<span class="sourceLineNo">2087</span> }<a name="line.2087"></a> +<span class="sourceLineNo">2088</span><a name="line.2088"></a> +<span class="sourceLineNo">2089</span> private static String mutationsToString(List<? extends Mutation> mutations) throws IOException {<a name="line.2089"></a> +<span class="sourceLineNo">2090</span> StringBuilder sb = new StringBuilder();<a name="line.2090"></a> +<span class="sourceLineNo">2091</span> String prefix = "";<a name="line.2091"></a> +<span class="sourceLineNo">2092</span> for (Mutation mutation : mutations) {<a name="line.2092"></a> +<span class="sourceLineNo">2093</span> sb.append(prefix).append(mutationToString(mutation));<a name="line.2093"></a> +<span class="sourceLineNo">2094</span> prefix = ", ";<a name="line.2094"></a> +<span class="sourceLineNo">2095</span> }<a name="line.2095"></a> +<span class="sourceLineNo">2096</span> return sb.toString();<a name="line.2096"></a> +<span class="sourceLineNo">2097</span> }<a name="line.2097"></a> +<span class="sourceLineNo">2098</span><a name="line.2098"></a> +<span class="sourceLineNo">2099</span> private static String mutationToString(Mutation p) throws IOException {<a name="line.2099"></a> +<span class="sourceLineNo">2100</span> return p.getClass().getSimpleName() + p.toJSON();<a name="line.2100"></a> +<span class="sourceLineNo">2101</span> }<a name="line.2101"></a> +<span class="sourceLineNo">2102</span><a name="line.2102"></a> +<span class="sourceLineNo">2103</span> /**<a name="line.2103"></a> +<span class="sourceLineNo">2104</span> * Get replication position for a peer in a region.<a name="line.2104"></a> +<span class="sourceLineNo">2105</span> * @param connection connection we're using<a name="line.2105"></a> +<span class="sourceLineNo">2106</span> * @return the position of this peer, -1 if no position in meta.<a name="line.2106"></a> +<span class="sourceLineNo">2107</span> */<a name="line.2107"></a> +<span class="sourceLineNo">2108</span> public static long getReplicationPositionForOnePeer(Connection connection,<a name="line.2108"></a> +<span class="sourceLineNo">2109</span> byte[] encodedRegionName, String peerId) throws IOException {<a name="line.2109"></a> +<span class="sourceLineNo">2110</span> Get get = new Get(encodedRegionName);<a name="line.2110"></a> +<span class="sourceLineNo">2111</span> get.addColumn(HConstants.REPLICATION_POSITION_FAMILY, Bytes.toBytes(peerId));<a name="line.2111"></a> +<span class="sourceLineNo">2112</span> Result r = get(getMetaHTable(connection), get);<a name="line.2112"></a> +<span class="sourceLineNo">2113</span> if (r.isEmpty()) {<a name="line.2113"></a> +<span class="sourceLineNo">2114</span> return -1;<a name="line.2114"></a> +<span class="sourceLineNo">2115</span> }<a name="line.2115"></a> +<span class="sourceLineNo">2116</span> Cell cell = r.rawCells()[0];<a name="line.2116"></a> +<span class="sourceLineNo">2117</span> return Bytes.toLong(cell.getValueArray(),cell.getValueOffset(),cell.getValueLength());<a name="line.2117"></a> +<span class="sourceLineNo">2118</span> }<a name="line.2118"></a> +<span class="sourceLineNo">2119</span><a name="line.2119"></a> +<span class="sourceLineNo">2120</span> /**<a name="line.2120"></a> +<span class="sourceLineNo">2121</span> * Get replication positions for all peers in a region.<a name="line.2121"></a> +<span class="sourceLineNo">2122</span> * @param connection connection we're using<a name="line.2122"></a> +<span class="sourceLineNo">2123</span> * @param encodedRegionName region's encoded name<a name="line.2123"></a> +<span class="sourceLineNo">2124</span> * @return the map of positions for each peer<a name="line.2124"></a> +<span class="sourceLineNo">2125</span> */<a name="line.2125"></a> +<span class="sourceLineNo">2126</span> public static Map<String, Long> getReplicationPositionForAllPeer(Connection connection,<a name="line.2126"></a> +<span class="sourceLineNo">2127</span> byte[] encodedRegionName) throws IOException {<a name="line.2127"></a> +<span class="sourceLineNo">2128</span> Get get = new Get(encodedRegionName);<a name="line.2128"></a> +<span class="sourceLineNo">2129</span> get.addFamily(HConstants.REPLICATION_POSITION_FAMILY);<a name="line.2129"></a> +<span class="sourceLineNo">2130</span> Result r = get(getMetaHTable(connection), get);<a name="line.2130"></a> +<span class="sourceLineNo">2131</span> Map<String, Long> map = new HashMap<>((int) (r.size() / 0.75 + 1));<a name="line.2131"></a> +<span class="sourceLineNo">2132</span> for (Cell c : r.listCells()) {<a name="line.2132"></a> +<span class="sourceLineNo">2133</span> map.put(<a name="line.2133"></a> +<span class="sourceLineNo">2134</span> Bytes.toString(c.getQualifierArray(), c.getQualifierOffset(), c.getQualifierLength()),<a name="line.2134"></a> +<span class="sourceLineNo">2135</span> Bytes.toLong(c.getValueArray(), c.getValueOffset(), c.getValueLength()));<a name="line.2135"></a> +<span class="sourceLineNo">2136</span> }<a name="line.2136"></a> +<span class="sourceLineNo">2137</span> return map;<a name="line.2137"></a> +<span class="sourceLineNo">2138</span> }<a name="line.2138"></a> +<span class="sourceLineNo">2139</span><a name="line.2139"></a> +<span class="sourceLineNo">2140</span> /**<a name="line.2140"></a> +<span class="sourceLineNo">2141</span> * Get replication barriers for all peers in a region.<a name="line.2141"></a> +<span class="sourceLineNo">2142</span> * @param encodedRegionName region's encoded name<a name="line.2142"></a> +<span class="sourceLineNo">2143</span> * @return a list of barrier sequence numbers.<a name="line.2143"></a> +<span class="sourceLineNo">2144</span> * @throws IOException<a name="line.2144"></a> +<span class="sourceLineNo">2145</span> */<a name="line.2145"></a> +<span class="sourceLineNo">2146</span> public static List<Long> getReplicationBarriers(Connection connection, byte[] encodedRegionName)<a name="line.2146"></a> +<span class="sourceLineNo">2147</span> throws IOException {<a name="line.2147"></a> +<span class="sourceLineNo">2148</span> Get get = new Get(encodedRegionName);<a name="line.2148"></a> +<span class="sourceLineNo">2149</span> get.addFamily(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.2149"></a> +<span class="sourceLineNo">2150</span> Result r = get(getMetaHTable(connection), get);<a name="line.2150"></a> +<span class="sourceLineNo">2151</span> List<Long> list = new ArrayList<>();<a name="line.2151"></a> +<span class="sourceLineNo">2152</span> if (!r.isEmpty()) {<a name="line.2152"></a> +<span class="sourceLineNo">2153</span> for (Cell cell : r.rawCells()) {<a name="line.2153"></a> +<span class="sourceLineNo">2154</span> list.add(Bytes.toLong(cell.getQualifierArray(), cell.getQualifierOffset(),<a name="line.2154"></a> +<span class="sourceLineNo">2155</span> cell.getQualifierLength()));<a name="line.2155"></a> +<span class="sourceLineNo">2156</span> }<a name="line.2156"></a> +<span class="sourceLineNo">2157</span> }<a name="line.2157"></a> +<span class="sourceLineNo">2158</span> return list;<a name="line.2158"></a> +<span class="sourceLineNo">2159</span> }<a name="line.2159"></a> +<span class="sourceLineNo">2160</span><a name="line.2160"></a> +<span class="sourceLineNo">2161</span> /**<a name="line.2161"></a> +<span class="sourceLineNo">2162</span> * Get all barriers in all regions.<a name="line.2162"></a> +<span class="sourceLineNo">2163</span> * @return a map of barrier lists in all regions<a name="line.2163"></a> +<span class="sourceLineNo">2164</span> * @throws IOException<a name="line.2164"></a> +<span class="sourceLineNo">2165</span> */<a name="line.2165"></a> +<span class="sourceLineNo">2166</span> public static Map<String, List<Long>> getAllBarriers(Connection connection) throws IOException {<a name="line.2166"></a> +<span class="sourceLineNo">2167</span> Map<String, List<Long>> map = new HashMap<>();<a name="line.2167"></a> +<span class="sourceLineNo">2168</span> Scan scan = new Scan();<a name="line.2168"></a> +<span class="sourceLineNo">2169</span> scan.addFamily(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.2169"></a> +<span class="sourceLineNo">2170</span> try (Table t = getMetaHTable(connection);<a name="line.2170"></a> +<span class="sourceLineNo">2171</span> ResultScanner scanner = t.getScanner(scan)) {<a name="line.2171"></a> +<span class="sourceLineNo">2172</span> Result result;<a name="line.2172"></a> +<span class="sourceLineNo">2173</span> while ((result = scanner.next()) != null) {<a name="line.2173"></a> +<span class="sourceLineNo">2174</span> String key = Bytes.toString(result.getRow());<a name="line.2174"></a> +<span class="sourceLineNo">2175</span> List<Long> list = new ArrayList<>(result.rawCells().length);<a name="line.2175"></a> +<span class="sourceLineNo">2176</span> for (Cell cell : result.rawCells()) {<a name="line.2176"></a> +<span class="sourceLineNo">2177</span> list.add(Bytes.toLong(cell.getQualifierArray(), cell.getQualifierOffset(),<a name="line.2177"></a> +<span class="sourceLineNo">2178</span> cell.getQualifierLength()));<a name="line.2178"></a> +<span class="sourceLineNo">2179</span> }<a name="line.2179"></a> +<span class="sourceLineNo">2180</span> map.put(key, list);<a name="line.2180"></a> +<span class="sourceLineNo">2181</span> }<a name="line.2181"></a> +<span class="sourceLineNo">2182</span> }<a name="line.2182"></a> +<span class="sourceLineNo">2183</span> return map;<a name="line.2183"></a> +<span class="sourceLineNo">2184</span> }<a name="line.2184"></a> +<span class="sourceLineNo">2185</span><a name="line.2185"></a> +<span class="sourceLineNo">2186</span> /**<a name="line.2186"></a> +<span class="sourceLineNo">2187</span> * Get daughter region(s) for a region, only used in serial replication.<a name="line.2187"></a> +<span class="sourceLineNo">2188</span> * @param connection connection we're using<a name="line.2188"></a> +<span class="sourceLineNo">2189</span> * @param encodedName region's encoded name<a name="line.2189"></a> +<span class="sourceLineNo">2190</span> * @throws IOException<a name="line.2190"></a> +<span class="sourceLineNo">2191</span> */<a name="line.2191"></a> +<span class="sourceLineNo">2192</span> public static String getSerialReplicationDaughterRegion(Connection connection, byte[] encodedName)<a name="line.2192"></a> +<span class="sourceLineNo">2193</span> throws IOException {<a name="line.2193"></a> +<span class="sourceLineNo">2194</span> Get get = new Get(encodedName);<a name="line.2194"></a> +<span class="sourceLineNo">2195</span> get.addColumn(HConstants.REPLICATION_META_FAMILY, daughterNameCq);<a name="line.2195"></a> +<span class="sourceLineNo">2196</span> Result result = get(getMetaHTable(connection), get);<a name="line.2196"></a> +<span class="sourceLineNo">2197</span> if (!result.isEmpty()) {<a name="line.2197"></a> +<span class="sourceLineNo">2198</span> Cell c = result.rawCells()[0];<a name="line.2198"></a> +<span class="sourceLineNo">2199</span> return Bytes.toString(c.getValueArray(), c.getValueOffset(), c.getValueLength());<a name="line.2199"></a> +<span class="sourceLineNo">2200</span> }<a name="line.2200"></a> +<span class="sourceLineNo">2201</span> return null;<a name="line.2201"></a> +<span class="sourceLineNo">2202</span> }<a name="line.2202"></a> +<span class="sourceLineNo">2203</span><a name="line.2203"></a> +<span class="sourceLineNo">2204</span> /**<a name="line.2204"></a> +<span class="sourceLineNo">2205</span> * Get parent region(s) for a region, only used in serial replication.<a name="line.2205"></a> +<span class="sourceLineNo">2206</span> * @param connection connection we're using<a name="line.2206"></a> +<span class="sourceLineNo">2207</span> * @param encodedName region's encoded name<a name="line.2207"></a> +<span class="sourceLineNo">2208</span> * @throws IOException<a name="line.2208"></a> +<span class="sourceLineNo">2209</span> */<a name="line.2209"></a> +<span class="sourceLineNo">2210</span> public static String getSerialReplicationParentRegion(Connection connection, byte[] encodedName)<a name="line.2210"></a> +<span class="sourceLineNo">2211</span> throws IOException {<a name="line.2211"></a> +<span class="sourceLineNo">2212</span> Get get = new Get(encodedName);<a name="line.2212"></a> +<span class="sourceLineNo">2213</span> get.addColumn(HConstants.REPLICATION_META_FAMILY, parentNameCq);<a name="line.2213"></a> +<span class="sourceLineNo">2214</span> Result result = get(getMetaHTable(connection), get);<a name="line.2214"></a> +<span class="sourceLineNo">2215</span> if (!result.isEmpty()) {<a name="line.2215"></a> +<span class="sourceLineNo">2216</span> Cell c = result.rawCells()[0];<a name="line.2216"></a> +<span class="sourceLineNo">2217</span> return Bytes.toString(c.getValueArray(), c.getValueOffset(), c.getValueLength());<a name="line.2217"></a> +<span class="sourceLineNo">2218</span> }<a name="line.2218"></a> +<span class="sourceLineNo">2219</span> return null;<a name="line.2219"></a> +<span class="sourceLineNo">2220</span> }<a name="line.2220"></a> +<span class="sourceLineNo">2221</span><a name="line.2221"></a> +<span class="sourceLineNo">2222</span> /**<a name="line.2222"></a> +<span class="sourceLineNo">2223</span> * Get the table name for a region, only used in serial replication.<a name="line.2223"></a> +<span class="sourceLineNo">2224</span> * @param connection connection we're using<a name="line.2224"></a> +<span class="sourceLineNo">2225</span> * @param encodedName region's encoded name<a name="line.2225"></a> +<span class="sourceLineNo">2226</span> * @throws IOException<a name="line.2226"></a> +<span class="sourceLineNo">2227</span> */<a name="line.2227"></a> +<span class="sourceLineNo">2228</span> public static String getSerialReplicationTableName(Connection connection, byte[] encodedName)<a name="line.2228"></a> +<span class="sourceLineNo">2229</span> throws IOException {<a name="line.2229"></a> +<span class="sourceLineNo">2230</span> Get get = new Get(encodedName);<a name="line.2230"></a> +<span class="sourceLineNo">2231</span> get.addColumn(HConstants.REPLICATION_META_FAMILY, tableNameCq);<a name="line.2231"></a> +<span class="sourceLineNo">2232</span> Result result = get(getMetaHTable(connection), get);<a name="line.2232"></a> +<span class="sourceLineNo">2233</span> if (!result.isEmpty()) {<a name="line.2233"></a> +<span class="sourceLineNo">2234</span> Cell c = result.rawCells()[0];<a name="line.2234"></a> +<span class="sourceLineNo">2235</span> return Bytes.toString(c.getValueArray(), c.getValueOffset(), c.getValueLength());<a name="line.2235"></a> +<span class="sourceLineNo">2236</span> }<a name="line.2236"></a> +<span class="sourceLineNo">2237</span> return null;<a name="line.2237"></a> +<span class="sourceLineNo">2238</span> }<a name="line.2238"></a> +<span class="sourceLineNo">2239</span>}<a name="line.2239"></a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html index 86ae9ca..aac5d54 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html @@ -16,11 +16,11 @@ <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a> <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a> <span class="sourceLineNo">010</span> public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a> -<span class="sourceLineNo">011</span> public static final String revision = "9189b88647f4fd32e9f11081630882374d4c4f28";<a name="line.11"></a> +<span class="sourceLineNo">011</span> public static final String revision = "3caeba07981de09c440284caa5d3d31d686377d6";<a name="line.11"></a> <span class="sourceLineNo">012</span> public static final String user = "jenkins";<a name="line.12"></a> -<span class="sourceLineNo">013</span> public static final String date = "Thu Jun 29 14:39:36 UTC 2017";<a name="line.13"></a> +<span class="sourceLineNo">013</span> public static final String date = "Fri Jun 30 14:39:18 UTC 2017";<a name="line.13"></a> <span class="sourceLineNo">014</span> public static final String url = "git://asf920.gq1.ygridcore.net/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a> -<span class="sourceLineNo">015</span> public static final String srcChecksum = "94bb184f2da0437a5711538925098d6e";<a name="line.15"></a> +<span class="sourceLineNo">015</span> public static final String srcChecksum = "10d4c35faee2fcd8d8b79186e53900f4";<a name="line.15"></a> <span class="sourceLineNo">016</span>}<a name="line.16"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.File.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.File.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.File.html index db7de7c..bcb9b8e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.File.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.File.html @@ -323,7 +323,7 @@ <span class="sourceLineNo">315</span> * @param start time the archiving started - used for resolving archive<a name="line.315"></a> <span class="sourceLineNo">316</span> * conflicts.<a name="line.316"></a> <span class="sourceLineNo">317</span> * @return the list of failed to archive files.<a name="line.317"></a> -<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occured<a name="line.318"></a> +<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occurred<a name="line.318"></a> <span class="sourceLineNo">319</span> */<a name="line.319"></a> <span class="sourceLineNo">320</span> private static List<File> resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a> <span class="sourceLineNo">321</span> Collection<File> toArchive, long start) throws IOException {<a name="line.321"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileConverter.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileConverter.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileConverter.html index db7de7c..bcb9b8e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileConverter.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileConverter.html @@ -323,7 +323,7 @@ <span class="sourceLineNo">315</span> * @param start time the archiving started - used for resolving archive<a name="line.315"></a> <span class="sourceLineNo">316</span> * conflicts.<a name="line.316"></a> <span class="sourceLineNo">317</span> * @return the list of failed to archive files.<a name="line.317"></a> -<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occured<a name="line.318"></a> +<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occurred<a name="line.318"></a> <span class="sourceLineNo">319</span> */<a name="line.319"></a> <span class="sourceLineNo">320</span> private static List<File> resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a> <span class="sourceLineNo">321</span> Collection<File> toArchive, long start) throws IOException {<a name="line.321"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileStatusConverter.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileStatusConverter.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileStatusConverter.html index db7de7c..bcb9b8e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileStatusConverter.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileStatusConverter.html @@ -323,7 +323,7 @@ <span class="sourceLineNo">315</span> * @param start time the archiving started - used for resolving archive<a name="line.315"></a> <span class="sourceLineNo">316</span> * conflicts.<a name="line.316"></a> <span class="sourceLineNo">317</span> * @return the list of failed to archive files.<a name="line.317"></a> -<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occured<a name="line.318"></a> +<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occurred<a name="line.318"></a> <span class="sourceLineNo">319</span> */<a name="line.319"></a> <span class="sourceLineNo">320</span> private static List<File> resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a> <span class="sourceLineNo">321</span> Collection<File> toArchive, long start) throws IOException {<a name="line.321"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileablePath.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileablePath.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileablePath.html index db7de7c..bcb9b8e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileablePath.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileablePath.html @@ -323,7 +323,7 @@ <span class="sourceLineNo">315</span> * @param start time the archiving started - used for resolving archive<a name="line.315"></a> <span class="sourceLineNo">316</span> * conflicts.<a name="line.316"></a> <span class="sourceLineNo">317</span> * @return the list of failed to archive files.<a name="line.317"></a> -<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occured<a name="line.318"></a> +<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occurred<a name="line.318"></a> <span class="sourceLineNo">319</span> */<a name="line.319"></a> <span class="sourceLineNo">320</span> private static List<File> resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a> <span class="sourceLineNo">321</span> Collection<File> toArchive, long start) throws IOException {<a name="line.321"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileableStoreFile.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileableStoreFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileableStoreFile.html index db7de7c..bcb9b8e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileableStoreFile.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.FileableStoreFile.html @@ -323,7 +323,7 @@ <span class="sourceLineNo">315</span> * @param start time the archiving started - used for resolving archive<a name="line.315"></a> <span class="sourceLineNo">316</span> * conflicts.<a name="line.316"></a> <span class="sourceLineNo">317</span> * @return the list of failed to archive files.<a name="line.317"></a> -<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occured<a name="line.318"></a> +<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occurred<a name="line.318"></a> <span class="sourceLineNo">319</span> */<a name="line.319"></a> <span class="sourceLineNo">320</span> private static List<File> resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a> <span class="sourceLineNo">321</span> Collection<File> toArchive, long start) throws IOException {<a name="line.321"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.StoreToFile.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.StoreToFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.StoreToFile.html index db7de7c..bcb9b8e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.StoreToFile.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.StoreToFile.html @@ -323,7 +323,7 @@ <span class="sourceLineNo">315</span> * @param start time the archiving started - used for resolving archive<a name="line.315"></a> <span class="sourceLineNo">316</span> * conflicts.<a name="line.316"></a> <span class="sourceLineNo">317</span> * @return the list of failed to archive files.<a name="line.317"></a> -<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occured<a name="line.318"></a> +<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occurred<a name="line.318"></a> <span class="sourceLineNo">319</span> */<a name="line.319"></a> <span class="sourceLineNo">320</span> private static List<File> resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a> <span class="sourceLineNo">321</span> Collection<File> toArchive, long start) throws IOException {<a name="line.321"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.html index db7de7c..bcb9b8e 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/HFileArchiver.html @@ -323,7 +323,7 @@ <span class="sourceLineNo">315</span> * @param start time the archiving started - used for resolving archive<a name="line.315"></a> <span class="sourceLineNo">316</span> * conflicts.<a name="line.316"></a> <span class="sourceLineNo">317</span> * @return the list of failed to archive files.<a name="line.317"></a> -<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occured<a name="line.318"></a> +<span class="sourceLineNo">318</span> * @throws IOException if an unexpected file operation exception occurred<a name="line.318"></a> <span class="sourceLineNo">319</span> */<a name="line.319"></a> <span class="sourceLineNo">320</span> private static List<File> resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a> <span class="sourceLineNo">321</span> Collection<File> toArchive, long start) throws IOException {<a name="line.321"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1b5f3a4b/devapidocs/src-html/org/apache/hadoop/hbase/client/ClientIdGenerator.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ClientIdGenerator.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ClientIdGenerator.html index 2530d3d..d91b6a5 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ClientIdGenerator.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ClientIdGenerator.html @@ -86,7 +86,7 @@ <span class="sourceLineNo">078</span><a name="line.78"></a> <span class="sourceLineNo">079</span> /**<a name="line.79"></a> <span class="sourceLineNo">080</span> * @return Some IPv4/IPv6 address available on the current machine that is up, not virtual<a name="line.80"></a> -<span class="sourceLineNo">081</span> * and not a loopback address. Empty array if none can be found or error occured.<a name="line.81"></a> +<span class="sourceLineNo">081</span> * and not a loopback address. Empty array if none can be found or error occurred.<a name="line.81"></a> <span class="sourceLineNo">082</span> */<a name="line.82"></a> <span class="sourceLineNo">083</span> public static byte[] getIpAddressBytes() {<a name="line.83"></a> <span class="sourceLineNo">084</span> try {<a name="line.84"></a>
