hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From git-site-r...@apache.org
Subject [20/32] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.
Date Fri, 30 Jun 2017 15:01:10 GMT
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&lt;HRegionInfo&gt; regionsToRemove,<a name="line.1991"></a>
-<span class="sourceLineNo">1992</span>                                   final List&lt;HRegionInfo&gt; regionsToAdd)<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span>    throws IOException {<a name="line.1993"></a>
-<span class="sourceLineNo">1994</span>    List&lt;Mutation&gt; mutation = new ArrayList&lt;&gt;();<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 &amp;&amp; regionsToRemove.size() &gt; 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 &amp;&amp; regionsToAdd.size() &gt; 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&lt;HRegionInfo&gt; regionsToRemove,<a name="line.1994"></a>
+<span class="sourceLineNo">1995</span>                                   final List&lt;HRegionInfo&gt; regionsToAdd)<a name="line.1995"></a>
+<span class="sourceLineNo">1996</span>    throws IOException {<a name="line.1996"></a>
+<span class="sourceLineNo">1997</span>    List&lt;Mutation&gt; mutation = new ArrayList&lt;&gt;();<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 &amp;&amp; regionsToRemove.size() &gt; 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&lt;HRegionInfo&gt; 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 &lt;= 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&lt;? extends Mutation&gt; 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&lt;String, Long&gt; 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&lt;String, Long&gt; map = new HashMap&lt;&gt;((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&lt;Long&gt; 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&lt;Long&gt; list = new ArrayList&lt;&gt;();<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&lt;String, List&lt;Long&gt;&gt; getAllBarriers(Connection connection) throws IOException {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    Map&lt;String, List&lt;Long&gt;&gt; map = new HashMap&lt;&gt;();<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&lt;Long&gt; list = new ArrayList&lt;&gt;(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 &amp;&amp; regionsToAdd.size() &gt; 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&lt;HRegionInfo&gt; 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 &lt;= 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&lt;? extends Mutation&gt; 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&lt;String, Long&gt; 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&lt;String, Long&gt; map = new HashMap&lt;&gt;((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&lt;Long&gt; 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&lt;Long&gt; list = new ArrayList&lt;&gt;();<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&lt;String, List&lt;Long&gt;&gt; getAllBarriers(Connection connection) throws IOException {<a name="line.2166"></a>
+<span class="sourceLineNo">2167</span>    Map&lt;String, List&lt;Long&gt;&gt; map = new HashMap&lt;&gt;();<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&lt;Long&gt; list = new ArrayList&lt;&gt;(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&lt;File&gt; resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a>
 <span class="sourceLineNo">321</span>      Collection&lt;File&gt; 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&lt;File&gt; resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a>
 <span class="sourceLineNo">321</span>      Collection&lt;File&gt; 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&lt;File&gt; resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a>
 <span class="sourceLineNo">321</span>      Collection&lt;File&gt; 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&lt;File&gt; resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a>
 <span class="sourceLineNo">321</span>      Collection&lt;File&gt; 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&lt;File&gt; resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a>
 <span class="sourceLineNo">321</span>      Collection&lt;File&gt; 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&lt;File&gt; resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a>
 <span class="sourceLineNo">321</span>      Collection&lt;File&gt; 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&lt;File&gt; resolveAndArchive(FileSystem fs, Path baseArchiveDir,<a name="line.320"></a>
 <span class="sourceLineNo">321</span>      Collection&lt;File&gt; 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>


Mime
View raw message